﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Reflection;
using BLL.Utils;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using DAL.DataSet;
using DAL.Entity;
using DAL.Persistencia;
using NewTierra.Reports;
using System.Globalization;
using NewTierra.App_Code;

namespace NewTierra.Pages
{
    public partial class SupplierConsulta : BasePage
    {

        public Int32 Sid;
        public string Snome;
        public static string imgVerTarifas;
        public static string displayFiltro;

        protected void Page_Load(object sender, EventArgs e)
        {
            base.PageLoad();
            IniciarPerfil();

            if (!IsPostBack)
            {
                //Response.Write(Server.MapPath("Reports/RptTarifasPSupp.rpt"));
                //Session["Sid"] = "60299";
                //Session.Abandon();
                //Session.Remove("IDsFiltroStatus");
                //Session.Remove("IDsFiltroTipoSupplier");

                //imgVerTarifas = "~/images/Icones/vertarifas.png";

                HttpContext.Current.Session.Remove("IDsFiltroStatus");
                HttpContext.Current.Session.Remove("IDsFiltroTipoSupplier");
                HttpContext.Current.Session.Remove("TipoPesquisaSupplier");
                HttpContext.Current.Session.Remove("IDsFiltroCidadeSupplier");

                Session["TipoPesquisaSupplier"] = 0;
                PopularDrops();
                displayFiltro = "none";
                //TabInfos.Enabled = false;
                //TabBases.Enabled = false;                
            }
        }

        protected void IniciarPerfil()
        {
            switch (base.ObterPerfilLogado())
            {
                case (int)PerfilUsuario.Financeiro:
                case (int)PerfilUsuario.Operacional:
                    btnShowContatos.Enabled = false;
                    btnShowCondPag.Enabled = false;
                    btnNovoSupplier.Enabled = false;
                    btnAtualizarSupplier.Enabled = false;
                    btnExcluirSupplier.Enabled = false;
                    btnLimparSupplier.Enabled = false;
                    btnShowAddFotoCategoria.Enabled = false;
                    btnShowInfoSupplier.Enabled = false;
                    btnAtualizarDescricao.Enabled = false;
                    btnEscluirDescricao.Enabled = false;
                    btnLimparDescricao.Enabled = false;
                    btnSalvar.Enabled = false;
                    btnNovaBase.Enabled = false;
                    btnNovaBaseAuto.Enabled = false;
                    btnExcluirBases.Enabled = false;
                    btnExcluirBases2.Enabled = false;
                    btnExcluirBases3.Enabled = false;
                    btnShowPeriodo.Enabled = false;
                    btnshowPerBlack.Enabled = false;
                    btnShowCopiarTarifa.Enabled = false;
                    btnShowDescCateg.Enabled = false;

                    break;
                default:
                    break;
            }
        }

        #region Popula Dados Supplier

        protected void CarregarSuppliersPorStatus(object sender, EventArgs e)
        {
            try
            {
                SupplierDAL d = new SupplierDAL();
                List<Supplier> dados = d.FindAllStatus(Convert.ToInt32(DDStatusFiltro.SelectedValue));

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
            }
        }

        protected void CarregarSuppliersPorTipo(object sender, EventArgs e)
        {
            try
            {
                SupplierDAL d = new SupplierDAL();
                List<Supplier> dados = d.FindAllTipo(Convert.ToInt32(DDTipoSupFiltro.SelectedValue));
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
            }
        }

        protected void CarregarSuppliersNome(object sender, EventArgs e)
        {
            try
            {
                SupplierDAL d = new SupplierDAL();
                CidadeDAL cid = new CidadeDAL();

                string[] pars = txtSupplier.Text.Split('°');

                string nomeS = pars[0].Remove(pars[0].Length - 1);
                string nomeCid = pars[1].Substring(1);

                int IdCidade = cid.ObterPorNome(nomeCid).CID_id;

                Supplier dados = d.ObterSupplierPorNome(nomeS, IdCidade);

                BuscaSupplier(sender, e, dados);
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
            }
        }

        #endregion

        #region Popula Dados Grid Periodos

        protected void CarregarDadosPeriodos(object sender, EventArgs e)
        {
            CarregarPeriodos(sender, e);
        }

        protected void CarregarPeriodos(object sender, EventArgs e)
        {
            try
            {
                PeriodosDAL p = new PeriodosDAL();
                GridTarifasPeriodo.DataSource = p.ListarTodosFds(Convert.ToInt32(Session["Sid"]), Convert.ToInt32(DropMercados.SelectedValue), Convert.ToInt32(DropBaseTarifarias.SelectedValue), Convert.ToInt32(ddlResponsavelFiltroTarifas.SelectedValue));
                GridTarifasPeriodo.DataBind(); //Desenhar

                if (GridTarifasPeriodo.PageCount > 0)
                {
                    Session["PeriodoIDTarifas"] = GridTarifasPeriodo.Rows[0].Cells[0].Text;
                }
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
            }
        }

        protected void PaginarDadosPeriodos(object sender, GridViewPageEventArgs e)
        {
            GridTarifasPeriodo.PageIndex = e.NewPageIndex;
            CarregarDadosPeriodos(sender, e);
        }

        #endregion

        #region Popula Dados Grid Periodos Blackout

        protected void CarregarDadosPeriodosBlackout(object sender, EventArgs e)
        {
            CarregarPeriodosBlackout(sender, e);
        }

        protected void CarregarPeriodosBlackout(object sender, EventArgs e)
        {
            try
            {
                PeriodoBlackDAL pb = new PeriodoBlackDAL();
                GridTarifasPeriodoBlack.DataSource = pb.ListarTodos(Convert.ToInt32(Session["Sid"]), Convert.ToInt32(DropMercados.SelectedValue), Convert.ToInt32(DropBaseTarifarias.SelectedValue));
                GridTarifasPeriodoBlack.DataBind(); //Desenhar
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }

        protected void PaginarDadosPeriodosBlackout(object sender, GridViewPageEventArgs e)
        {
            //Realiza a paginação
            GridTarifasPeriodoBlack.PageIndex = e.NewPageIndex;
            CarregarDadosPeriodosBlackout(sender, e); //Atualizar os dados do GridView
        }

        #endregion

        #region Popula Dados Grid Bases

        protected void PopulaGridBases(int index)
        {
            try
            {
                SBasesDAL b = new SBasesDAL();

                switch (index)
                {
                    case 0:
                        GridBases.DataSource = b.ListarTodosPorSupplier(Convert.ToInt32(Session["Sid"]), 1, Convert.ToInt32(ddlMercadoFiltro_Base.SelectedValue), Convert.ToInt32(ddlBaseTarifariaFiltro_Base.SelectedValue), Convert.ToInt32(ddlMoedaFiltro_Base.SelectedValue), Convert.ToInt32(ddlTipoTransporte.SelectedValue), Convert.ToInt32(ddlTipoBase_Base.SelectedValue));
                        GridBases.DataBind();
                        GridBases2.DataSource = b.ListarTodosPorSupplier(Convert.ToInt32(Session["Sid"]), 2, Convert.ToInt32(ddlMercadoFiltro_Base.SelectedValue), Convert.ToInt32(ddlBaseTarifariaFiltro_Base.SelectedValue), Convert.ToInt32(ddlMoedaFiltro_Base.SelectedValue), Convert.ToInt32(ddlTipoTransporte.SelectedValue), Convert.ToInt32(ddlTipoBase_Base.SelectedValue));
                        GridBases2.DataBind();
                        GridBases3.DataSource = b.ListarTodosPorSupplier(Convert.ToInt32(Session["Sid"]), 3, Convert.ToInt32(ddlMercadoFiltro_Base.SelectedValue), Convert.ToInt32(ddlBaseTarifariaFiltro_Base.SelectedValue), Convert.ToInt32(ddlMoedaFiltro_Base.SelectedValue), Convert.ToInt32(ddlTipoTransporte.SelectedValue), Convert.ToInt32(ddlTipoBase_Base.SelectedValue));
                        GridBases3.DataBind();
                        break;
                    case 1:
                        GridBases.DataSource = b.ListarTodosPorSupplier(Convert.ToInt32(Session["Sid"]), index, Convert.ToInt32(ddlMercadoFiltro_Base.SelectedValue), Convert.ToInt32(ddlBaseTarifariaFiltro_Base.SelectedValue), Convert.ToInt32(ddlMoedaFiltro_Base.SelectedValue), Convert.ToInt32(ddlTipoTransporte.SelectedValue), Convert.ToInt32(ddlTipoBase_Base.SelectedValue));
                        GridBases.DataBind();
                        break;

                    case 2:
                        GridBases2.DataSource = b.ListarTodosPorSupplier(Convert.ToInt32(Session["Sid"]), index, Convert.ToInt32(ddlMercadoFiltro_Base.SelectedValue), Convert.ToInt32(ddlBaseTarifariaFiltro_Base.SelectedValue), Convert.ToInt32(ddlMoedaFiltro_Base.SelectedValue), Convert.ToInt32(ddlTipoTransporte.SelectedValue), Convert.ToInt32(ddlTipoBase_Base.SelectedValue));
                        GridBases2.DataBind();
                        break;

                    case 3:
                        GridBases3.DataSource = b.ListarTodosPorSupplier(Convert.ToInt32(Session["Sid"]), index, Convert.ToInt32(ddlMercadoFiltro_Base.SelectedValue), Convert.ToInt32(ddlBaseTarifariaFiltro_Base.SelectedValue), Convert.ToInt32(ddlMoedaFiltro_Base.SelectedValue), Convert.ToInt32(ddlTipoTransporte.SelectedValue), Convert.ToInt32(ddlTipoBase_Base.SelectedValue));
                        GridBases3.DataBind();
                        break;
                }

            }
            catch (Exception ex)
            {
                lblMsgCadBases.Text = ex.Message;
            }
        }

        #endregion

        #region Popula Dados Drops

        protected void PopularDrops()
        {
            PopulaDropMercado();
            PopulaDropRede();
            PopulaDropClassificacao();
            PopulaDropPais();
            PopulaDropCidade();
            PopulaDropStatus();
            PopulaDropTipoSupplier();
            PopulaDropStatusFiltro();
            PopulaDropTipoSupFiltro();
            PopulaDropBaseTarifaria();
            PopulaDropCidadeFiltroSupFiltro();
            PopulaDropResponsavel();
            PopulaDropCategoria();
            PopulaDropMercadoFiltroBase();
            PopulaDropBaseTarifariaFiltroBase();
            PopulaDropMoedaFiltroBase();
            popularDropTipoTransporteFiltroBase();
            popularDropTipoBaseFiltroBase();
            PopulaDataListAmenitites();
            PopulaDropPaisReport();
            PopulaDropCidadeReport();
            PopulaDropCambioReport();
            PopulaDropMercadoReport();
            popularDropBaseTarifariaReport();
            pupularDropSupplierReport();

        }

        void PopulaDropRede()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DDRede.DataSource = n.S_Rede.ToList().OrderBy(r => r.Rede_nome);
                    DDRede.DataValueField = "Rede_id";
                    DDRede.DataTextField = "Rede_Nome";
                    DDRede.DataBind();

                    DDRede.Items.Insert(0, new ListItem("Selecione...", "0"));
                }
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropStatus()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DDStatus.DataSource = n.S_Status.ToList().OrderBy(s => s.STATUS_nome);
                    DDStatus.DataValueField = "STATUS_id";
                    DDStatus.DataTextField = "STATUS_nome";
                    DDStatus.DataBind();
                }

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropTipoSupplier()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DDTipoSup.DataSource = n.TipoSupls.ToList().OrderBy(t => t.TIPOSUPL_nome);
                    DDTipoSup.DataValueField = "TIPOSUPL_id";
                    DDTipoSup.DataTextField = "TIPOSUPL_nome";
                    DDTipoSup.DataBind();

                    DDTipoSup.Items.Insert(0, new ListItem("Selecione...", "0"));
                }

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropClassificacao()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DDClassificacao.DataSource = n.S_Categoria.ToList().OrderBy(s => s.Categ_classificacao);
                    DDClassificacao.DataValueField = "Categ_id";
                    DDClassificacao.DataTextField = "Categ_classificacao";
                    DDClassificacao.DataBind();

                    DDClassificacao.Items.Insert(0, new ListItem("Sem Classificação...", "0"));
                }

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropPais()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DDPais.DataSource = n.Pais.ToList().OrderBy(p => p.PAIS_nome);
                    DDPais.DataValueField = "PAIS_id";
                    DDPais.DataTextField = "PAIS_nome";
                    DDPais.DataBind();
                    PopulaDropCidade();
                }

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        protected void DDPais_SelectedIndexChanged(object sender, EventArgs e)
        {
            PopulaDropCidade();
        }

        void PopulaDropCidade()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    int idPais = Convert.ToInt32(DDPais.SelectedValue);
                    DDCidade.DataSource = n.Cidades.Where(c => c.PAIS_id == idPais).OrderBy(c => c.CID_nome).ToList();
                    DDCidade.DataValueField = "CID_id";
                    DDCidade.DataTextField = "CID_nome";
                    DDCidade.DataBind();

                    DDCidade.Items.Insert(0, new ListItem("Selecione...", "0"));
                }

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropStatusFiltro()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DDStatusFiltro.DataSource = n.S_Status.ToList().OrderBy(s => s.STATUS_nome);
                    DDStatusFiltro.DataValueField = "STATUS_id";
                    DDStatusFiltro.DataTextField = "STATUS_nome";
                    DDStatusFiltro.DataBind();

                    DDStatusFiltro.Items.Insert(0, new ListItem("Todos", "0"));
                }

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropTipoSupFiltro()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DDTipoSupFiltro.DataSource = n.TipoSupls.ToList().OrderBy(t => t.TIPOSUPL_nome);
                    DDTipoSupFiltro.DataValueField = "TIPOSUPL_id";
                    DDTipoSupFiltro.DataTextField = "TIPOSUPL_nome";
                    DDTipoSupFiltro.DataBind();

                    DDTipoSupFiltro.Items.Insert(0, new ListItem("Todos", "0"));
                }

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropCidadeFiltroSupFiltro()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    ddlCidadeFiltro.DataSource = n.Cidades.OrderBy(c => c.CID_nome).ToList();
                    ddlCidadeFiltro.DataValueField = "CID_id";
                    ddlCidadeFiltro.DataTextField = "CID_nome";
                    ddlCidadeFiltro.DataBind();

                    ddlCidadeFiltro.Items.Insert(0, new ListItem("Todas", "0"));
                }

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropMercado()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DropMercados.DataSource = n.Mercadoes.ToList();
                    DropMercados.DataValueField = "Mercado_id";
                    DropMercados.DataTextField = "Mercado_nome";
                    DropMercados.DataBind();
                }

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropBaseTarifaria()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DropBaseTarifarias.DataSource = n.BaseTarifarias.ToList();
                    DropBaseTarifarias.DataValueField = "BaseTarifaria_id";
                    DropBaseTarifarias.DataTextField = "BaseTarifaria_nome";
                    DropBaseTarifarias.DataBind();
                }


            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropResponsavel()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    ddlResponsavel.DataSource = n.Suppliers.OrderBy(s => s.S_nome).ToList();
                    ddlResponsavel.DataValueField = "S_id";
                    ddlResponsavel.DataTextField = "S_nome";
                    ddlResponsavel.DataBind();

                    ddlResponsavel.Items.Insert(0, new ListItem("O Mesmo...", "0"));
                }


            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropCategoria()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    ddlCategoriaEscrita.DataSource = n.S_Categoria_Escrita.OrderBy(s => s.CategoriaEscrita_nome).ToList();
                    ddlCategoriaEscrita.DataValueField = "CategoriaEscrita_id";
                    ddlCategoriaEscrita.DataTextField = "CategoriaEscrita_nome";
                    ddlCategoriaEscrita.DataBind();

                    ddlCategoriaEscrita.Items.Insert(0, new ListItem("Sem Classificação...", "0"));
                }


            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropResponsavelFiltroTarifas()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    ddlResponsavelFiltroTarifas.DataSource = n.Suppliers.OrderBy(s => s.S_nome).ToList();
                    ddlResponsavelFiltroTarifas.DataValueField = "S_id";
                    ddlResponsavelFiltroTarifas.DataTextField = "S_nome";
                    ddlResponsavelFiltroTarifas.DataBind();

                    ddlResponsavelFiltroTarifas.Items.Insert(0, new ListItem("O Mesmo", Convert.ToString(Session["Sid"])));
                }


            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropMercadoFiltroBase()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    ddlMercadoFiltro_Base.DataSource = n.Mercadoes.ToList();
                    ddlMercadoFiltro_Base.DataValueField = "Mercado_id";
                    ddlMercadoFiltro_Base.DataTextField = "Mercado_nome";
                    ddlMercadoFiltro_Base.DataBind();
                }
            }
            catch (Exception ex)
            {
                lblMsgCadBases.Text = ex.Message;
            }
        }

        void PopulaDropBaseTarifariaFiltroBase()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    ddlBaseTarifariaFiltro_Base.DataSource = n.BaseTarifarias.ToList();
                    ddlBaseTarifariaFiltro_Base.DataValueField = "BaseTarifaria_id";
                    ddlBaseTarifariaFiltro_Base.DataTextField = "BaseTarifaria_nome";
                    ddlBaseTarifariaFiltro_Base.DataBind();
                }
            }
            catch (Exception ex)
            {
                lblMsgCadBases.Text = ex.Message;
            }
        }

        void PopulaDropMoedaFiltroBase()
        {
            try
            {
                using (NewTierraEntities Con = new NewTierraEntities())
                {
                    ddlMoedaFiltro_Base.DataSource = Con.Moeda.ToList().OrderBy(m => m.Moeda_nome);
                    ddlMoedaFiltro_Base.DataTextField = "Moeda_sigla";
                    ddlMoedaFiltro_Base.DataValueField = "Moeda_id";
                    ddlMoedaFiltro_Base.DataBind();
                }
            }
            catch (Exception ex)
            {
                lblMsgCadBases.Text = ex.Message;
            }
        }

        void popularDropTipoTransporteFiltroBase()
        {
            try
            {
                using (NewTierraEntities Con = new NewTierraEntities())
                {
                    ddlTipoTransporte.DataSource = Con.Tipo_Transporte.OrderBy(t => t.TipoTrans_nome).ToList();
                    ddlTipoTransporte.DataTextField = "TipoTrans_nome";
                    ddlTipoTransporte.DataValueField = "IdTipoTrans";
                    ddlTipoTransporte.DataBind();

                    //ddlTipoTransporte.Items.Insert(0, new ListItem("Selecione...", "0"));
                }
            }
            catch (Exception ex)
            {
                lblMsgCadBases.Text = ex.Message;
            }
        }

        void popularDropTipoBaseFiltroBase()
        {
            try
            {
                using (NewTierraEntities Con = new NewTierraEntities())
                {
                    ddlTipoBase_Base.DataSource = Con.Tipo_Base.OrderBy(t => t.TipoBase_nome).ToList();
                    ddlTipoBase_Base.DataTextField = "TipoBase_nome";
                    ddlTipoBase_Base.DataValueField = "TipoBase_id";
                    ddlTipoBase_Base.DataBind();

                    ddlTipoBase_Base.SelectedValue = "2";

                    //ddlTipoTransporte.Items.Insert(0, new ListItem("Selecione...", "0"));
                }
            }
            catch (Exception ex)
            {
                lblMsgCadBases.Text = ex.Message;
            }
        }

        void pupularDropSupplierReport()
        {

            try
            {
                SupplierDAL sDAL = new SupplierDAL();
                ddlSupplierReport.DataSource = sDAL.ListarTodos().OrderBy(p => p.S_nome);
                ddlSupplierReport.DataTextField = "S_nome";
                ddlSupplierReport.DataValueField = "S_id";
                ddlSupplierReport.DataBind();

                ddlSupplierReport.Items.Insert(0, new ListItem("Selecione...", "0"));

            }
            catch (Exception)
            {

                throw;
            }

        }

        #endregion

        #region CRUD Supplier

        protected void CadastrarSupplier(object sender, EventArgs e)
        {
            SupplierDAL d = new SupplierDAL();

            if (txtCodigo.Text != "")
            {
                LimpaCampos(this.Controls);
                lblMsgCadSupplier.Text = "";
                //lblNomeSupplierHead.Text = "";
                lblTituloNomeSupplier.Text = "";
                lblTituloNomeSupplierBases.Text = "";
                lblTituloNomeSupplierInfos.Text = "";
                btnNovoSupplier.Text = "Salvar";
                PanelTarifas.Visible = false;
                TabContainerInfos.Visible = false;
                //TabInfos.Enabled = false;
                //TabBases.Enabled = false;
                PopularDrops();
                //Session.Abandon();
                txtNome.Focus();
                return;
            }

            if (d.VerificaExiste(txtNome.Text, Convert.ToInt32(DDCidade.SelectedValue), 0))
            {
                MostrarMsg("Já existe supplier cadastrado com esse nome nessa cidade, tente outro.");
                return;
            }

            //if (d.ObterPorNome(txtNome.Text))
            //{
            //    //lblMsgCadSupplier.Text = "Já existe supplier cadastrado com esse nome, tente outro.";
            //    MostrarMsg("Já existe supplier cadastrado com esse nome, tente outro.");
            //    return;
            //}

            try
            {
                Supplier s = new Supplier();

                s.S_nome = txtNome.Text;
                s.S_razaosocial = txtRazaoSocial.Text;
                s.S_cnpj = txtCnpjCpf.Text;
                s.S_endereco = txtEndereco.Text;
                s.S_cep = txtCep.Text;
                s.S_fax = txtFax.Text;
                s.S_teleplantao = txtTelefonePL.Text;
                s.S_telefone = txtTelefone.Text;
                s.S_endereco = txtEndereco.Text;
                s.S_http = txtSite.Text;
                s.S_email = txtEmail.Text;
                s.S_reservas = rdoReservas.SelectedValue;
                s.S_faturar = rdoFaturar.SelectedValue;
                s.STATUS_id = Convert.ToInt32(DDStatus.SelectedValue);
                //s.TIPOSUPL_id = Convert.ToInt32(DDTipoSup.SelectedValue);
                //s.CID_id = Convert.ToInt32(DDCidade.SelectedValue);
                s.PAIS_id = Convert.ToInt32(DDPais.SelectedValue);
                //s.Categ_id = Convert.ToInt32(DDClassificacao.SelectedValue);
                //s.Rede_id = Convert.ToInt32(DDRede.SelectedValue);

                if (txtQtdPessoas.Text.Equals(""))
                { s.S_qtdpessoas = null; }
                else
                { s.S_qtdpessoas = Convert.ToInt32(txtQtdPessoas.Text); }


                switch (ddlPessoaApt.SelectedValue)
                {
                    case "0":
                        s.S_pessoaOUapt = null;
                        break;
                    case "pessoa":
                        s.S_pessoaOUapt = "pessoa";
                        break;
                    case "apartamento":
                        s.S_pessoaOUapt = "apartamento";
                        break;
                }

                if (DDTipoSup.SelectedValue.Equals("0"))
                {
                    MostrarMsg("Favor selecionar tipo do supplier.");
                    //lblMsgCadSupplier.Text = "Favor selecionar tipo do supplier."; 
                    return;
                }
                else
                { s.TIPOSUPL_id = Convert.ToInt32(DDTipoSup.SelectedValue); }

                if (DDCidade.SelectedValue.Equals("0"))
                { MostrarMsg("Favor selecionar cidade do supplier."); return; }
                else
                { s.CID_id = Convert.ToInt32(DDCidade.SelectedValue); }

                if (DDRede.SelectedValue.Equals("0"))
                { s.Rede_id = null; }
                else
                { s.Rede_id = Convert.ToInt32(DDRede.SelectedValue); }

                if (DDClassificacao.SelectedValue.Equals("0"))
                { s.Categ_id = null; }
                else
                { s.Categ_id = Convert.ToInt32(DDClassificacao.SelectedValue); }

                if (ddlCategoriaEscrita.SelectedValue.Equals("0"))
                { s.CategoriaEscrita_id = null; }
                else
                { s.CategoriaEscrita_id = Convert.ToInt32(ddlCategoriaEscrita.SelectedValue); }

                if (!ddlResponsavel.SelectedValue.Equals("0"))
                { s.Responsavel_id = Convert.ToInt32(ddlResponsavel.SelectedValue); }

                if (chkRecomended.Checked) s.Recomended = true; else s.Recomended = false;

                d.Salvar(s);

                if (ddlResponsavel.SelectedValue.Equals("0"))
                {
                    s.Responsavel_id = s.S_id;
                    d.Atualizar(s);
                }

                MostrarMsg("Cadastrado efetuado com sucesso.");
                //LimpaCampos(this.Controls);
                BuscaSupplier(sender, e, s);
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
            }
        }

        protected void ExcluirSupplier(object sender, EventArgs e)
        {
            try
            {
                if (txtCodigo.Text == "")
                {
                    MostrarMsg("Selecione um supplier para ser excluído.");
                    return;
                }

                if (!ExcluiFotoPasta())
                {
                    MostrarMsg("Não foi possível deletar as fotos na pasta 'Galeria' por favor tente novamente.");
                    return;
                }

                int IdSupplier = Convert.ToInt32(txtCodigo.Text);

                SupplierDAL d = new SupplierDAL();

                Supplier s = d.ObterPorId(IdSupplier);
                d.Excluir(s);
                //Session.Abandon();
                Session.Remove("Sid");
                Session.Remove("Snome");
                Session.Remove("DescricaoID");
                Session.Remove("PeriodoIDTarifas");
                //lblNomeSupplierHead.Text = "";
                lblTituloNomeSupplier.Text = "";
                lblTituloNomeSupplierBases.Text = "";
                lblTituloNomeSupplierInfos.Text = "";
                TabContainerInfos.Visible = false;
                PanelTarifas.Visible = false;
                LimpaCampos(this.Controls);
                btnNovoSupplier.Text = "Salvar";
                //TabInfos.Enabled = false;
                // TabBases.Enabled = false;
                PopularDrops();
                MostrarMsg("Supplier excluído com sucesso.");
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
            }
        }

        public bool ExcluiFotoPasta()
        {
            try
            {
                FotoDAL f = new FotoDAL();

                //string path = "~/Galeria/" + Session["Sid"];
                //System.IO.File.Delete(Server.MapPath(path));

                foreach (S_Image p in f.ListarTodosLista(Convert.ToInt32(txtCodigo.Text)))
                {
                    string path = "~/Galeria/" + Session["Sid"] + "/" + p.Image_nome;
                    System.IO.File.Delete(Server.MapPath(path));
                }
                return true;
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
                return false;
            }
        }

        protected void AtualizarSupplier(object sender, EventArgs e)
        {
            try
            {
                SupplierDAL d = new SupplierDAL();

                if (txtCodigo.Text == "")
                {
                    MostrarMsg("Selecione um supplier para ser atualizado.");
                    return;
                }

                if (d.VerificaExiste(txtNome.Text, Convert.ToInt32(DDCidade.SelectedValue), Convert.ToInt32(txtCodigo.Text)))
                {
                    MostrarMsg("Já existe supplier cadastrado com esse nome nessa cidade, tente outro.");
                    return;
                }

                Supplier s = new Supplier();

                s.S_id = Convert.ToInt32(txtCodigo.Text);
                s.S_nome = txtNome.Text;
                s.S_razaosocial = txtRazaoSocial.Text;
                s.S_cnpj = txtCnpjCpf.Text;
                s.S_endereco = txtEndereco.Text;
                s.S_cep = txtCep.Text;
                s.S_fax = txtFax.Text;
                s.S_teleplantao = txtTelefonePL.Text;
                s.S_telefone = txtTelefone.Text;
                s.S_endereco = txtEndereco.Text;
                s.S_http = txtSite.Text;
                s.S_email = txtEmail.Text;
                s.S_reservas = rdoReservas.SelectedValue;
                s.S_faturar = rdoFaturar.SelectedValue;
                s.STATUS_id = Convert.ToInt32(DDStatus.SelectedValue);
                //s.TIPOSUPL_id = Convert.ToInt32(DDTipoSup.SelectedValue);
                //s.CID_id = Convert.ToInt32(DDCidade.SelectedValue);
                s.PAIS_id = Convert.ToInt32(DDPais.SelectedValue);
                //s.Categ_id = Convert.ToInt32(DDClassificacao.SelectedValue);
                //s.Rede_id = Convert.ToInt32(DDRede.SelectedValue);
                //s.S_qtdpessoas = Convert.ToInt32(txtQtdPessoas.Text);

                if (txtQtdPessoas.Text.Equals(""))
                { s.S_qtdpessoas = null; }
                else
                { s.S_qtdpessoas = Convert.ToInt32(txtQtdPessoas.Text); }

                switch (ddlPessoaApt.SelectedValue)
                {
                    case "0":
                        s.S_pessoaOUapt = null;
                        break;
                    case "pessoa":
                        s.S_pessoaOUapt = "pessoa";
                        break;
                    case "apartamento":
                        s.S_pessoaOUapt = "apartamento";
                        break;
                }

                if (DDTipoSup.SelectedValue.Equals("0"))
                { MostrarMsg("Favor selecionar tipo do supplier."); return; }
                else
                { s.TIPOSUPL_id = Convert.ToInt32(DDTipoSup.SelectedValue); }

                if (DDCidade.SelectedValue.Equals("0"))
                { MostrarMsg("Favor selecionar cidade do supplier."); return; }
                else
                { s.CID_id = Convert.ToInt32(DDCidade.SelectedValue); }

                if (DDRede.SelectedValue.Equals("0"))
                { s.Rede_id = null; }
                else
                { s.Rede_id = Convert.ToInt32(DDRede.SelectedValue); }

                if (DDClassificacao.SelectedValue.Equals("0"))
                { s.Categ_id = null; }
                else
                { s.Categ_id = Convert.ToInt32(DDClassificacao.SelectedValue); }

                if (ddlResponsavel.SelectedValue.Equals("0"))
                { s.Responsavel_id = s.S_id; }
                else
                { s.Responsavel_id = Convert.ToInt32(ddlResponsavel.SelectedValue); }

                if (ddlCategoriaEscrita.SelectedValue.Equals("0"))
                { s.CategoriaEscrita_id = null; }
                else
                { s.CategoriaEscrita_id = Convert.ToInt32(ddlCategoriaEscrita.SelectedValue); }

                if (chkRecomended.Checked) s.Recomended = true; else s.Recomended = false;

                d.Atualizar(s);

                FileTarifasDAL ftd = new FileTarifasDAL();

                List<File_Tarifas> filesTar = ftd.ListarTodos(lblTituloNomeSupplier.Text);

                foreach (File_Tarifas item in filesTar)
                {
                    File_Tarifas ft = new File_Tarifas();
                    ft.S_nome = txtNome.Text;
                    ft.File_Tarifas_id = item.File_Tarifas_id;

                    ftd.AtualizarSNome(ft);
                }

                MostrarMsg("Registro atualizado com sucesso.");
                BuscaSupplier(sender, e, s);
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
            }
        }

        #endregion

        #region Regras

        [WebMethod]
        protected void btnImgFilter_Click(object sender, ImageClickEventArgs e)
        {
            if (displayFiltro.Equals("none"))
            {
                displayFiltro = "block";
            }
            else
            {
                displayFiltro = "none";
            }
        }

        protected void VoltarMenu(object sender, EventArgs e)
        {
            Response.Redirect("~/Pages/Index.aspx");
        }

        [WebMethod]
        public static List<string> SearchSuppliers(string prefixText, int count)
        {
            using (NewTierraEntities Con = new NewTierraEntities())
            {
                int idStatus = Convert.ToInt32(HttpContext.Current.Session["IDsFiltroStatus"]);
                int idTipoSupplier = Convert.ToInt32(HttpContext.Current.Session["IDsFiltroTipoSupplier"]);
                int TipoPesquisa = Convert.ToInt32(HttpContext.Current.Session["TipoPesquisaSupplier"]);
                int idCidade = Convert.ToInt32(HttpContext.Current.Session["IDsFiltroCidadeSupplier"]);

                List<Supplier> s = new List<Supplier>();


                if (TipoPesquisa == 0)
                {
                    if (idTipoSupplier > 0 && idStatus > 0 && idCidade > 0)
                    {
                        if (prefixText.Equals("*"))
                        {
                            s = Con.Suppliers.Where(p => p.TIPOSUPL_id == idTipoSupplier
                                            && p.STATUS_id == idStatus
                                            && p.CID_id == idCidade).OrderBy(z => z.S_nome).ToList();
                        }
                        else
                        {
                            s = Con.Suppliers.Where(p => p.S_nome.Contains(prefixText)
                                                && p.TIPOSUPL_id == idTipoSupplier
                                                && p.STATUS_id == idStatus
                                                && p.CID_id == idCidade).OrderBy(z => z.S_nome).ToList();
                        }
                    }
                    else if (idTipoSupplier > 0 && idStatus > 0)
                    {
                        if (prefixText.Equals("*"))
                        {
                            s = Con.Suppliers.Where(p => p.TIPOSUPL_id == idTipoSupplier && p.STATUS_id == idStatus).OrderBy(z => z.S_nome).ToList();
                        }
                        else
                        {
                            s = Con.Suppliers.Where(p => p.S_nome.Contains(prefixText) && p.TIPOSUPL_id == idTipoSupplier && p.STATUS_id == idStatus).OrderBy(z => z.S_nome).ToList();
                        }
                    }
                    else if (idTipoSupplier > 0 && idCidade > 0)
                    {
                        if (prefixText.Equals("*"))
                        {
                            s = Con.Suppliers.Where(p => p.TIPOSUPL_id == idTipoSupplier && p.CID_id == idCidade).OrderBy(z => z.S_nome).ToList();
                        }
                        else
                        {
                            s = Con.Suppliers.Where(p => p.S_nome.Contains(prefixText) && p.TIPOSUPL_id == idTipoSupplier && p.CID_id == idCidade).OrderBy(z => z.S_nome).ToList();
                        }
                    }
                    else if (idStatus > 0 && idCidade > 0)
                    {
                        if (prefixText.Equals("*"))
                        {
                            s = Con.Suppliers.Where(p => p.STATUS_id == idStatus && p.CID_id == idCidade).OrderBy(z => z.S_nome).ToList();
                        }
                        else
                        {
                            s = Con.Suppliers.Where(p => p.S_nome.Contains(prefixText) && p.STATUS_id == idStatus && p.CID_id == idCidade).OrderBy(z => z.S_nome).ToList();
                        }
                    }
                    else if (idTipoSupplier > 0)
                    {
                        if (prefixText.Equals("*"))
                        {
                            s = Con.Suppliers.Where(p => p.TIPOSUPL_id == idTipoSupplier).OrderBy(z => z.S_nome).ToList();
                        }
                        else
                        {
                            s = Con.Suppliers.Where(p => p.S_nome.Contains(prefixText) && p.TIPOSUPL_id == idTipoSupplier).OrderBy(z => z.S_nome).ToList();
                        }
                    }
                    else if (idStatus > 0)
                    {
                        if (prefixText.Equals("*"))
                        {
                            s = Con.Suppliers.Where(p => p.STATUS_id == idStatus).OrderBy(z => z.S_nome).ToList();
                        }
                        else
                        {
                            s = Con.Suppliers.Where(p => p.S_nome.Contains(prefixText) && p.STATUS_id == idStatus).OrderBy(z => z.S_nome).ToList();
                        }
                    }
                    else if (idCidade > 0)
                    {
                        if (prefixText.Equals("*"))
                        {
                            s = Con.Suppliers.Where(p => p.CID_id == idCidade).OrderBy(z => z.S_nome).ToList();
                        }
                        else
                        {
                            s = Con.Suppliers.Where(p => p.S_nome.Contains(prefixText) && p.CID_id == idCidade).OrderBy(z => z.S_nome).ToList();
                        }
                    }
                    else
                    {
                        if (prefixText.Equals("*"))
                        {
                            s = Con.Suppliers.OrderBy(z => z.S_nome).ToList();
                        }
                        else
                        {
                            s = Con.Suppliers.Where(p => p.S_nome.Contains(prefixText)).OrderBy(z => z.S_nome).ToList();
                        }
                    }
                }
                else
                {
                    if (idTipoSupplier > 0 && idStatus > 0 && idCidade > 0)
                    {
                        s = Con.Suppliers.Where(p => p.S_endereco.Contains(prefixText)
                                            && p.TIPOSUPL_id == idTipoSupplier
                                            && p.STATUS_id == idStatus
                                            && p.CID_id == idCidade).OrderBy(z => z.S_nome).ToList();
                    }
                    else if (idTipoSupplier > 0 && idStatus > 0)
                    {
                        s = Con.Suppliers.Where(p => p.S_endereco.Contains(prefixText) && p.TIPOSUPL_id == idTipoSupplier && p.STATUS_id == idStatus).OrderBy(z => z.S_nome).ToList();
                    }
                    else if (idTipoSupplier > 0 && idCidade > 0)
                    {
                        s = Con.Suppliers.Where(p => p.S_endereco.Contains(prefixText) && p.TIPOSUPL_id == idTipoSupplier && p.CID_id == idCidade).OrderBy(z => z.S_nome).ToList();
                    }
                    else if (idStatus > 0 && idCidade > 0)
                    {
                        s = Con.Suppliers.Where(p => p.S_nome.Contains(prefixText) && p.STATUS_id == idStatus && p.CID_id == idCidade).OrderBy(z => z.S_nome).ToList();
                    }
                    else if (idTipoSupplier > 0)
                    {
                        s = Con.Suppliers.Where(p => p.S_endereco.Contains(prefixText) && p.TIPOSUPL_id == idTipoSupplier).OrderBy(z => z.S_nome).ToList();
                    }
                    else if (idStatus > 0)
                    {
                        s = Con.Suppliers.Where(p => p.S_endereco.Contains(prefixText) && p.STATUS_id == idStatus).OrderBy(z => z.S_nome).ToList();
                    }
                    else if (idCidade > 0)
                    {
                        s = Con.Suppliers.Where(p => p.S_endereco.Contains(prefixText) && p.CID_id == idCidade).OrderBy(z => z.S_nome).ToList();
                    }
                    else
                    {
                        s = Con.Suppliers.Where(p => p.S_endereco.Contains(prefixText)).OrderBy(z => z.S_nome).ToList();
                    }
                }


                List<string> lista = new List<string>();

                if (s.Count == 0)
                {
                    lista.Add("Não existe supplier cadastrado com esse nome.");

                    return lista;
                }

                foreach (Supplier p in s)
                {
                    lista.Add(p.S_nome + " ° " + p.Cidade.CID_nome);
                }

                return lista;
            }
        }

        protected void BuscaSupplier(object sender, EventArgs e, Supplier s)
        {
            lblMsgCadSupplier.Text = "";

            try
            {
                SupplierDAL d = new SupplierDAL();

                Session["Sid"] = s.S_id;
                Session["Snome"] = s.S_nome;

                if (s.TIPOSUPL_id == 3)
                {
                    //TabInfos.Enabled = false;
                    PanelTarifas.Visible = true;

                    PopulaDropResponsavelFiltroTarifas();

                    CarregarDadosPeriodos(sender, e);
                    CarregarDadosPeriodosBlackout(sender, e);
                }
                else
                {
                    Buscadescricao();
                    PopulaDropResponsavelFiltroTarifas();



                    CarregarDadosPeriodos(sender, e);
                    CarregarDadosPeriodosBlackout(sender, e);
                    //TabInfos.Enabled = true;
                    PanelTarifas.Visible = true;
                }

                //Session.Remove("DescricaoID");
                Session.Remove("PeriodoIDTarifas");
                TabContainerInfos.Visible = true;
                //TabBases.Enabled = true;
                txtSupplier.Text = "";
                btnNovoSupplier.Text = "Novo";
                PopulaGridBases(0);
                PopulaGridResumoBases(s.S_id);

                //lblNomeSupplierHead.Text = "Supplier selecionado: " + s.S_nome;

                lblTituloNomeSupplier.Text = s.S_nome;
                lblTituloNomeSupplierBases.Text = s.S_nome;
                lblTituloNomeSupplierInfos.Text = s.S_nome;

                txtCodigo.Text = Convert.ToString(s.S_id);
                txtNome.Text = s.S_nome;
                txtRazaoSocial.Text = s.S_razaosocial;
                txtCnpjCpf.Text = s.S_cnpj;
                txtEndereco.Text = s.S_endereco;
                txtCep.Text = s.S_cep;
                txtFax.Text = s.S_fax;
                txtTelefonePL.Text = s.S_teleplantao;
                txtTelefone.Text = s.S_telefone;
                txtEndereco.Text = s.S_endereco;
                txtSite.Text = s.S_http;
                txtEmail.Text = s.S_email;
                rdoFaturar.SelectedValue = s.S_faturar;
                rdoReservas.SelectedValue = s.S_reservas;
                txtQtdPessoas.Text = s.S_qtdpessoas.ToString();

                switch (s.S_pessoaOUapt)
                {
                    case null:
                        ddlPessoaApt.SelectedValue = "0";
                        break;
                    case "pessoa":
                        ddlPessoaApt.SelectedValue = "pessoa";
                        break;
                    case "apartamento":
                        ddlPessoaApt.SelectedValue = "apartamento";
                        break;
                }

                if (s.Categ_id == null)
                { DDClassificacao.SelectedValue = "0"; }
                else
                { DDClassificacao.SelectedValue = Convert.ToString(s.Categ_id); }

                if (s.Rede_id == null)
                { DDRede.SelectedValue = "0"; }
                else
                { DDRede.SelectedValue = Convert.ToString(s.Rede_id); }

                if (s.CategoriaEscrita_id == null)
                { ddlCategoriaEscrita.SelectedValue = "0"; }
                else
                { ddlCategoriaEscrita.SelectedValue = Convert.ToString(s.CategoriaEscrita_id); }

                if (s.Responsavel_id == s.S_id)
                { ddlResponsavel.SelectedValue = "0"; }
                else
                { ddlResponsavel.SelectedValue = Convert.ToString(s.Responsavel_id); }

                DDStatus.SelectedValue = Convert.ToString(s.STATUS_id);
                DDTipoSup.SelectedValue = Convert.ToString(s.TIPOSUPL_id);
                DDPais.SelectedValue = Convert.ToString(s.PAIS_id);
                PopulaDropCidade();
                DDCidade.SelectedValue = Convert.ToString(s.CID_id);
                //DDClassificacao.SelectedValue = Convert.ToString(s.Categ_id);
                //DDRede.SelectedValue = Convert.ToString(s.Rede_id);

                if (s.Recomended == true) chkRecomended.Checked = true; else chkRecomended.Checked = false;

                DDTipoSup_SelectedIndexChanged(sender, e);

                PopulaDataListAmenitites();

                PanelTarifasNovo.Visible = false;
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
            }
        }

        protected void LimpaCampos(ControlCollection controls)
        {
            foreach (Control ctrl in controls)
            {
                if (ctrl is TextBox)
                {
                    (ctrl as TextBox).Text = string.Empty;
                }
                // ... demais controles que queira limpar

                LimpaCampos(ctrl.Controls);
            }
        }

        protected void DDStatusFiltro_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (DDStatusFiltro.SelectedValue.Equals("0"))
            {
                Session["IDsFiltroStatus"] = 0;
            }
            else
            {
                Session["IDsFiltroStatus"] = DDStatusFiltro.SelectedValue;
            }
        }

        protected void DDTipoSupFiltro_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (DDTipoSupFiltro.SelectedValue.Equals("0"))
            {
                Session["IDsFiltroTipoSupplier"] = 0;
            }
            else
            {
                Session["IDsFiltroTipoSupplier"] = DDTipoSupFiltro.SelectedValue;
            }
        }

        protected void ddlCidadeFiltro_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlCidadeFiltro.SelectedValue.Equals("0"))
            {
                Session["IDsFiltroCidadeSupplier"] = 0;
            }
            else
            {
                Session["IDsFiltroCidadeSupplier"] = ddlCidadeFiltro.SelectedValue;
            }
        }

        protected void btnLimparSupplier_Click(object sender, EventArgs e)
        {
            //LimpaCampos(Controls);
            //Session.Abandon();
            Response.Redirect("SupplierConsulta.aspx");
        }

        protected void DropMercados_SelectedIndexChanged(object sender, EventArgs e)
        {

            CarregarDadosPeriodos(sender, e);
            CarregarDadosPeriodosBlackout(sender, e);
            Session.Remove("PeriodoIDTarifas");
            //CarregarDadosTarifas(sender, e);
            //CarregarDadosMeal(sender, e);
        }

        protected void DropBaseTarifarias_SelectedIndexChanged(object sender, EventArgs e)
        {

            CarregarDadosPeriodos(sender, e);
            CarregarDadosPeriodosBlackout(sender, e);
            Session.Remove("PeriodoIDTarifas");
            //CarregarDadosTarifas(sender, e);
            //CarregarDadosMeal(sender, e);
        }

        protected void GridTarifasPeriodo_SelectedIndexChanged(object sender, EventArgs e)
        {
            if ((base.ObterPerfilLogado() == (int)PerfilUsuario.Financeiro) ||
     (base.ObterPerfilLogado() == (int)PerfilUsuario.Operacional))
                return;

            Session["PeriodoIDTarifas"] = Convert.ToInt32(GridTarifasPeriodo.SelectedRow.Cells[0].Text);
            //lblTarifaSelecionada.Text = GridTarifasPeriodo.SelectedRow.Cells[1].Text + " a " + GridTarifasPeriodo.SelectedRow.Cells[2].Text;
            //CarregarDadosTarifas(sender, e);
            //CarregarDadosMeal(sender, e);
        }

        protected void RdoCompleteSupplier_SelectedIndexChanged(object sender, EventArgs e)
        {
            Session["TipoPesquisaSupplier"] = RdoCompleteSupplier.SelectedValue;
        }

        protected void AtualizaGridPeriodo(object sender, EventArgs e)
        {

            CarregarDadosPeriodos(sender, e);
        }

        protected void AtualizaGridPeriodoBlack(object sender, EventArgs e)
        {

            CarregarDadosPeriodosBlackout(sender, e);
        }

        protected void AtualizaGridsPeriodo_PeriodoBlack(object sender, EventArgs e)
        {

            CarregarDadosPeriodos(sender, e);
            CarregarDadosPeriodosBlackout(sender, e);
            lblMsgGridPeriodos.Text = "";
        }

        protected void GridTarifasPeriodo_RowCreated(object sender, GridViewRowEventArgs e)
        {
            ImageButton AddTarifasGrid = (ImageButton)e.Row.FindControl("AddTarifasGrid");

            if (AddTarifasGrid != null)
            {
                ScriptManagerSupplier.RegisterPostBackControl(AddTarifasGrid);
            }
        }

        protected void AbrirPopUpTarifas(object sender, CommandEventArgs e)
        {
            int myId = Convert.ToInt32(e.CommandArgument);
            Session["PeriodoIDTarifas"] = myId;

            try
            {
                PeriodosDAL p = new PeriodosDAL();
                MoedaDAL m = new MoedaDAL();

                S_Mercado_Periodo d = new S_Mercado_Periodo();
                d = p.ObterPorIdMercado(myId);

                Moeda n = new Moeda();
                n = m.ObterPorId(Convert.ToInt32(d.Moeda_id));

                Dictionary<string, string> dadosTarifa = new Dictionary<string, string>();

                dadosTarifa.Add("Mercado", Convert.ToString(DropMercados.SelectedItem));
                dadosTarifa.Add("Base", Convert.ToString(DropBaseTarifarias.SelectedItem));
                dadosTarifa.Add("Moeda", Convert.ToString(n.Moeda_sigla));
                dadosTarifa.Add("Responsavel", p.ObterPorResp(Convert.ToInt32(ddlResponsavelFiltroTarifas.SelectedValue), myId).S_nome);

                if (d.MinimoNoites_id != null)
                {
                    dadosTarifa.Add("MinNoites", Convert.ToString(d.MinimoNoites.MinimoNoites_qtd));

                    if (d.S_merc_periodo_minimo == true)
                    {
                        dadosTarifa.Add("MinORMand", "Mínimo");
                    }
                    else
                    {
                        dadosTarifa.Add("MinORMand", "Mandatório");
                    }
                }
                else
                {
                    dadosTarifa.Add("MinNoites", "");
                    dadosTarifa.Add("MinORMand", "");
                }

                if (d.Promocao_id != null)
                {
                    dadosTarifa.Add("Promocao", Convert.ToString(d.Promocao.Promocao_nome));
                }
                else
                {
                    dadosTarifa.Add("Promocao", "");
                }

                Dictionary<string, string> dadosPeriodo = new Dictionary<string, string>();

                dadosPeriodo.Add("IdMercado", DropMercados.SelectedValue);
                dadosPeriodo.Add("IdBaseTarifaria", DropBaseTarifarias.SelectedValue);
                dadosPeriodo.Add("IdResponsavel", ddlResponsavelFiltroTarifas.SelectedValue);

                Session["IdsPeriodos"] = dadosPeriodo;
                Session["TitulosTarifas"] = dadosTarifa;

                PanelTarifasNovo.Visible = true;

                //MostrarMsg("Navegue para aba Tarifas, para edição desse item selecionado.");
                ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "a", "$('#tabs').tabs({ active: 3 });", true);
                //ModalPopupExtenderAddTarifa.Show();
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
            }

            //string script = "";
            //script = script + "window.open('AddTarifa.aspx','', " + "'status=1, scrollbars=yes, width=1300, height=650, top=0, left=0');";
            //ScriptManager.RegisterStartupScript(this, this.GetType(), "AddTarifas", script, true);
        }

        protected void AbrirPopUpVerTarifas(object sender, CommandEventArgs e)
        {
            int myId = Convert.ToInt32(e.CommandArgument);
            Session["PeriodoIDTarifasVer"] = myId;

            PeriodosDAL p = new PeriodosDAL();
            MoedaDAL m = new MoedaDAL();

            if (!p.VerificaTarifa(myId))
            {
                MostrarMsg("Esse período não possui tarifas.");
                return;
            }

            S_Mercado_Periodo d = new S_Mercado_Periodo();
            d = p.ObterPorIdMercado(myId);

            Moeda n = new Moeda();
            n = m.ObterPorId(Convert.ToInt32(d.Moeda_id));

            Dictionary<string, string> dadosTarifa = new Dictionary<string, string>();

            dadosTarifa.Add("Mercado", Convert.ToString(DropMercados.SelectedItem));
            dadosTarifa.Add("Base", Convert.ToString(DropBaseTarifarias.SelectedItem));
            dadosTarifa.Add("Moeda", Convert.ToString(n.Moeda_sigla));
            dadosTarifa.Add("Responsavel", p.ObterPorResp(Convert.ToInt32(ddlResponsavelFiltroTarifas.SelectedValue), myId).S_nome);


            Dictionary<string, string> dadosPeriodo = new Dictionary<string, string>();

            dadosPeriodo.Add("IdMercado", DropMercados.SelectedValue);
            dadosPeriodo.Add("IdBaseTarifaria", DropBaseTarifarias.SelectedValue);
            dadosPeriodo.Add("IdResponsavel", ddlResponsavelFiltroTarifas.SelectedValue);

            Session["IdsPeriodosVer"] = dadosPeriodo;
            Session["TitulosTarifasVer"] = dadosTarifa;

            string script = "";
            script = script + "window.open('VerTarifasPorPeriodo.aspx','', " + "'status=1, scrollbars=yes, width=820, height=650, top=0, left=0');";
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Tarifa", script, true);
        }

        protected void AbrirPopUpEditarPeriodo(object sender, CommandEventArgs e)
        {
            int myId = Convert.ToInt32(e.CommandArgument);
            Session["PeriodoIDEditar"] = myId;

            string script = "";
            script = script + "window.open('AddPeriodo.aspx?Tipo=edit','', " + "'status=1, scrollbars=yes, width=650, height=420, top=0, left=0');";
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Tarifa", script, true);
        }

        protected void AbrirPopUpAddDescrPacote(object sender, CommandEventArgs e)
        {
            try
            {
                int myId = Convert.ToInt32(e.CommandArgument);
                Session["PeriodoIDEditar"] = myId;

                PeriodosDAL pd = new PeriodosDAL();
                S_Mercado_Periodo p = pd.ObterPorIdPeriodo(Convert.ToInt32(Session["PeriodoIDEditar"]));

                int qtdNoites = p.MinimoNoites.MinimoNoites_qtd;

                string script = "";
                script = script + "window.open('AddDescritivoPacote.aspx?qtd=" + qtdNoites + "','', " + "'status=1, scrollbars=yes, width=810, height=550, top=0, left=0');";
                ScriptManager.RegisterStartupScript(this, this.GetType(), "Descritivo", script, true);
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
            }

        }

        protected void GridTarifasPeriodo_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                PeriodosDAL pd = new PeriodosDAL();
                MercadoEstacaoDAL mec = new MercadoEstacaoDAL();

                foreach (GridViewRow item in GridTarifasPeriodo.Rows)
                {
                    int IdPeriodo = Convert.ToInt32(item.Cells[0].Text);
                    ImageButton VerTarifas = (ImageButton)item.FindControl("VerTarifas");
                    ImageButton AddDescrPacote = (ImageButton)item.FindControl("AddDescrPacote");
                    ImageButton btnProvisorio = (ImageButton)item.FindControl("btnProvisorio");

                    if (pd.VerificaTarifa(IdPeriodo))
                    { VerTarifas.ImageUrl = "~/images/Icones/vertarifas.png"; }
                    else
                    { VerTarifas.ImageUrl = "~/images/Icones/vertarifasStarifas.png"; }

                    if (mec.VerificaPacotePorPeriodo(IdPeriodo))
                    { AddDescrPacote.Enabled = true; AddDescrPacote.ImageUrl = "~/images/Icones/note.png"; }
                    else
                    { AddDescrPacote.Enabled = false; AddDescrPacote.ImageUrl = "~/images/Icones/noteS.png"; }

                    S_Mercado_Periodo smp = pd.ObterPorIdPeriodo(IdPeriodo);

                    if ((smp.Provisorio == null) || (!(bool)smp.Provisorio)) btnProvisorio.ImageUrl = "../../images/Icones/naoprovisorio.png";
                    else btnProvisorio.ImageUrl = "../../images/Icones/provisorio.png";
                }
            }
            catch (Exception ex)
            {
                lblMsgGridPeriodos.Text = ex.Message;
            }
        }

        protected void ExcluirPeriodosTarifas(object sender, CommandEventArgs e)
        {
            try
            {
                PeriodosDAL p = new PeriodosDAL();

                S_Mercado_Periodo mp = p.ObterPorIdMercado(Convert.ToInt32(e.CommandArgument));
                p.Excluir(mp);

                MostrarMsg("Período excluído com sucesso.");

                CarregarDadosPeriodos(sender, e);
            }
            catch (Exception ex)
            {
                lblMsgGridPeriodos.Text = ex.Message;
                lblMsgGridPeriodos.ForeColor = System.Drawing.Color.Red;
            }

        }

        protected void ExcluirPeriodosTarifasBlackout(object sender, CommandEventArgs e)
        {
            try
            {
                PeriodoBlackDAL p = new PeriodoBlackDAL();

                S_Mercado_Periodo_Black mp = p.ObterPorId(Convert.ToInt32(e.CommandArgument));

                p.Excluir(mp);

                MostrarMsg("Blackout excluído com sucesso.");

                CarregarDadosPeriodosBlackout(sender, e);
            }
            catch (Exception ex)
            {
                lblMsgGridPeriodos.Text = ex.Message;
                lblMsgGridPeriodos.ForeColor = System.Drawing.Color.Red;
            }

        }

        protected void ddlMercadoFiltro_Base_SelectedIndexChanged(object sender, EventArgs e)
        {
            PopulaGridBases(0);
        }

        protected void ddlBaseTarifariaFiltro_Base_SelectedIndexChanged(object sender, EventArgs e)
        {
            PopulaGridBases(0);
        }

        protected void ddlMoedaFiltro_Base_SelectedIndexChanged(object sender, EventArgs e)
        {
            PopulaGridBases(0);
        }

        protected void ddlTipoTransporte_SelectedIndexChanged(object sender, EventArgs e)
        {
            PopulaGridBases(0);
        }

        protected void ddlTipoBase_Base_SelectedIndexChanged(object sender, EventArgs e)
        {
            PopulaGridBases(0);
        }

        protected void DDTipoSup_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (DDTipoSup.SelectedValue.Equals("4"))
            {
                ddlCategoriaEscrita.Enabled = false;
                DDRede.Enabled = false;
                DDClassificacao.Enabled = false;
            }
            else
            {
                ddlCategoriaEscrita.Enabled = true;
                DDRede.Enabled = true;
                DDClassificacao.Enabled = true;
            }
        }

        protected void TarifaProvisoria_Click(object sender, CommandEventArgs e)
        {
            PeriodosDAL pd = new PeriodosDAL();

            S_Mercado_Periodo smp = pd.ObterPorIdPeriodo(Convert.ToInt32(e.CommandArgument));

            if (smp.Provisorio == null)
                smp.Provisorio = true;
            else
                smp.Provisorio = !smp.Provisorio;

            pd.Atualizar(smp);

            CarregarDadosPeriodos(sender, e);
        }

        #endregion

        #region Reports

        protected void PopulaDropCambioReport()
        {
            try
            {
                MoedaDAL cd = new MoedaDAL();

                ddlCambioReport.DataSource = cd.ListarTodos().ToList();
                ddlCambioReport.DataValueField = "Moeda_id";
                ddlCambioReport.DataTextField = "Moeda_sigla";
                ddlCambioReport.DataBind();

                //ddlCambioReport.Items.Insert(0, new ListItem("Selecione...", "0"));

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected void PopulaDropMercadoReport()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    ddlMercadoReport.DataSource = n.Mercadoes.ToList();
                    ddlMercadoReport.DataValueField = "Mercado_id";
                    ddlMercadoReport.DataTextField = "Mercado_nome";
                    ddlMercadoReport.DataBind();

                    ddlMercadoReport.Items.Insert(0, new ListItem("Selecione...", "0"));
                }
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected void popularDropBaseTarifariaReport()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    ddlBaseTarifariaReport.DataSource = n.BaseTarifarias.ToList();
                    ddlBaseTarifariaReport.DataValueField = "BaseTarifaria_id";
                    ddlBaseTarifariaReport.DataTextField = "BaseTarifaria_nome";
                    ddlBaseTarifariaReport.DataBind();

                    ddlBaseTarifariaReport.Items.Insert(0, new ListItem("Selecione...", "0"));
                }

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected string obtemMeal(Int32 id)
        {

            try
            {
                string result = "";

                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);
                string sql;

                Con.Open();

                sql = "SELECT S_meal_nome from S_Meal where S_meal_id = " + id;

                SqlCommand cmd = new SqlCommand(sql, Con);
                SqlDataReader reader = cmd.ExecuteReader();



                while (reader.Read())
                {
                    result = reader["S_meal_nome"].ToString();
                }

                Con.Close();
                return result;
            }
            catch (Exception)
            {

                throw;
            }

        }

        protected void PopulaDropPaisReport()
        {
            try
            {
                PaisDAL pd = new PaisDAL();

                ddlPaisReport.DataSource = pd.ListarTodos().ToList().OrderBy(p => p.PAIS_nome);
                ddlPaisReport.DataValueField = "PAIS_id";
                ddlPaisReport.DataTextField = "PAIS_nome";
                ddlPaisReport.DataBind();
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected void ddlPaisReport_SelectedIndexChanged(object sender, EventArgs e)
        {
            PopulaDropCidadeReport();
            ModalPopupExtenderReport.Show();
        }

        protected void PopulaDropCidadeReport()
        {
            try
            {
                CidadeDAL cd = new CidadeDAL();

                int idPais = Convert.ToInt32(ddlPaisReport.SelectedValue);
                ddlCidadeReport.DataSource = cd.ListarTodos().OrderBy(c => c.CID_nome).ToList();
                ddlCidadeReport.DataValueField = "CID_id";
                ddlCidadeReport.DataTextField = "CID_nome";
                ddlCidadeReport.DataBind();

                ddlCidadeReport.Items.Insert(0, new ListItem("Selecione...", "0"));

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected void btnEmitirRelatorioGeral_Click(object sender, EventArgs e)
        {

            string NomeEmpresa = ConfigurationManager.AppSettings["NomeEmpresa"];
            string EnderecoEmpresa = ConfigurationManager.AppSettings["EnderecoEmpresa"];
            string ContatoEmpresa = ConfigurationManager.AppSettings["ContatoEmpresa"];

            decimal markup = 0;

            decimal tarifaTotalMarkup = 0;
            decimal tarifaTotalMarkup2 = 0;
            decimal tarifaTotalMarkup3 = 0;

            if (txtMarkupRelatorio.Text.Equals(""))
            {
                markup = 0;
            }
            else
            {
                markup = Convert.ToDecimal(txtMarkupRelatorio.Text);
            }



            Utils utils = new Utils();

            SupplierDAL spd = new SupplierDAL();
            PeriodosDAL perd = new PeriodosDAL();
            TarifaDAL tad = new TarifaDAL();
            TarifCategoriaDAL tcgd = new TarifCategoriaDAL();

            DSSupplierTarifas ds = new DSSupplierTarifas();

            DataTable dt = ds.Tables["SUPPLIERTARIFAS"];

            string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
            SqlConnection Con = new SqlConnection(pars[1]);
            string sql;

            DateTime dataFrom = DateTime.ParseExact(txtfromReport.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);
            DateTime dataTo = DateTime.ParseExact(txttoReport.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);

            Con.Open();

            sql = "SELECT Cidade.CID_nome, S_Mercado_Periodo.S_merc_periodo_id, S_Categoria.Categ_classificacao + ' - ' + Supplier.S_nome AS S_nome, ";
            sql = sql + "S_Mercado_Periodo.S_merc_periodo_from, S_Mercado_Periodo.S_merc_periodo_to, S_Mercado_Periodo.S_merc_periodo_fdsFrom, ";
            sql = sql + "S_Mercado_Periodo.S_merc_periodo_fdsTo, S_Mercado_Tipo_Tarifa.S_mercado_tipo_tarifa_nome, Tipo_Room.Tipo_room_nome, ";
            sql = sql + "Tarif_Categoria.Tarif_categoria_nome, S_Mercado_Tarifa.S_merc_tarif_tarifa_total, S_Mercado_Tarifa_Status.S_mercado_tarifa_status_nome, Moeda.Moeda_id, ";
            sql = sql + "Moeda.Moeda_sigla, S_Mercado_Tarifa.S_merc_tarif_porPessoa, S_Mercado_Tarifa.S_merc_tarif_porApartamento, S_Mercado_Tarifa.S_merc_tarif_status_id ";

            sql = sql + ", S_Mercado_Periodo.Pacote_nome, S_Mercado_Periodo.S_merc_periodo_minimo, S_Mercado_Periodo.S_merc_periodo_mandatorio, S_Mercado_Estacao.S_mercado_estacao_nome, S_Mercado_Estacao.S_mercado_estacao_pacote, MinimoNoites.MinimoNoites_qtd ";


            sql = sql + "FROM Supplier ";
            sql = sql + "INNER JOIN S_Mercado_Periodo ON Supplier.S_id = S_Mercado_Periodo.S_id ";
            sql = sql + "INNER JOIN S_Mercado_Tarifa ON S_Mercado_Periodo.S_merc_periodo_id = S_Mercado_Tarifa.S_merc_periodo_id ";
            sql = sql + "INNER JOIN Tarif_Categoria ON S_Mercado_Tarifa.Tarif_categoria_id = Tarif_Categoria.Tarif_categoria_id ";
            sql = sql + "INNER JOIN Tipo_Room ON S_Mercado_Tarifa.Tipo_room_id = Tipo_Room.Tipo_room_id ";
            sql = sql + "INNER JOIN S_Mercado_Tipo_Tarifa ON S_Mercado_Tarifa.S_mercado_tipo_tarifa_id = S_Mercado_Tipo_Tarifa.S_mercado_tipo_tarifa_id ";
            sql = sql + "INNER JOIN Moeda ON S_Mercado_Periodo.Moeda_id = Moeda.Moeda_id ";
            sql = sql + "INNER JOIN Cidade ON Supplier.CID_id = Cidade.CID_id ";
            sql = sql + "INNER JOIN S_Categoria ON Supplier.Categ_id = S_Categoria.Categ_id ";

            sql = sql + "INNER JOIN S_Mercado_Estacao ON S_Mercado_Periodo.S_mercado_estacao_id = S_Mercado_Estacao.S_mercado_estacao_id ";
            sql = sql + "LEFT OUTER JOIN MinimoNoites ON S_Mercado_Periodo.MinimoNoites_id = MinimoNoites.MinimoNoites_id ";

            sql = sql + "LEFT OUTER JOIN S_Mercado_Tarifa_Status ON S_Mercado_Tarifa.S_merc_tarif_status_id = S_Mercado_Tarifa_Status.S_mercado_tarifa_status_id ";

            sql = sql + " WHERE ((S_Mercado_Periodo.S_merc_periodo_from <= '" + dataFrom.ToString("yyyyMMdd") + "') AND (S_Mercado_Periodo.S_merc_periodo_to >= '" + dataTo.ToString("yyyyMMdd") + "') ";

            if (!ddlCidadeReport.SelectedValue.Equals("0"))
            {
                sql = sql + " AND Supplier.CID_id =" + Convert.ToInt32(ddlCidadeReport.SelectedValue);
            }

            if (!ddlMercadoReport.SelectedValue.Equals("0"))
            {
                sql = sql + " AND S_Mercado_Periodo.Mercado_id =" + Convert.ToInt32(ddlMercadoReport.SelectedValue);
            }

            if (!ddlBaseTarifariaReport.SelectedValue.Equals("0"))
            {
                sql = sql + " AND S_Mercado_Periodo.BaseTarifaria_id =" + Convert.ToInt32(ddlBaseTarifariaReport.SelectedValue);
            }

            if (!ddlSupplierReport.SelectedValue.Equals("0"))
            {
                sql = sql + " AND Supplier.S_id =" + Convert.ToInt32(ddlSupplierReport.SelectedValue);
            }
            sql = sql + " AND S_Mercado_Tipo_Tarifa.S_mercado_tipo_tarifa_id = 1";

            //sql = sql + " AND Supplier.Recomended = 'true' ";

            ///////////////////COMEÇAR OR

            sql = sql + " OR (S_Mercado_Periodo.S_merc_periodo_from <= '" + dataTo.ToString("yyyyMMdd") + "') AND (S_Mercado_Periodo.S_merc_periodo_to >= '" + dataFrom.ToString("yyyyMMdd") + "') ";

            if (!ddlCidadeReport.SelectedValue.Equals("0"))
            {
                sql = sql + " AND Supplier.CID_id =" + Convert.ToInt32(ddlCidadeReport.SelectedValue);
            }

            if (!ddlMercadoReport.SelectedValue.Equals("0"))
            {
                sql = sql + " AND S_Mercado_Periodo.Mercado_id =" + Convert.ToInt32(ddlMercadoReport.SelectedValue);
            }

            if (!ddlBaseTarifariaReport.SelectedValue.Equals("0"))
            {
                sql = sql + " AND S_Mercado_Periodo.BaseTarifaria_id =" + Convert.ToInt32(ddlBaseTarifariaReport.SelectedValue);
            }

            if (!ddlSupplierReport.SelectedValue.Equals("0"))
            {
                sql = sql + " AND Supplier.S_id =" + Convert.ToInt32(ddlSupplierReport.SelectedValue);
            }

            sql = sql + " AND S_Mercado_Tipo_Tarifa.S_mercado_tipo_tarifa_id = 1)";

            //sql = sql + " AND Supplier.Recomended = 'true' ";

            //sql = sql + " ORDER BY CID_Nome, S_Mercado_Periodo.S_merc_periodo_id, S_nome, Tarif_categoria_nome, S_mercado_tipo_tarifa_nome, S_meal_nome, Tipo_room_nome";

            sql = sql + " ORDER BY CID_Nome, S_Mercado_Periodo.S_merc_periodo_id, S_nome, Tarif_categoria_nome, S_mercado_tipo_tarifa_nome, Tipo_room_nome";


            SqlCommand cmd = new SqlCommand(sql, Con);
            SqlDataReader reader = cmd.ExecuteReader();
            MealDAL mealDAL = new MealDAL();

            string idPeriodo = "";
            string nomeSupplier = "";
            string nomeCategoria = "";
            string nomeTarifa = "";
            string nomeMeal = "";
            bool retornou = false;
            //string nomeRoom = "";

            string supplier = "";

            DataRow drw = dt.NewRow();

            decimal cambio = 1;

            while (reader.Read())
            {
                retornou = true;

                tarifaTotalMarkup = 0;
                string teste111 = reader["S_merc_tarif_tarifa_total"].ToString();

                if (!reader["S_merc_tarif_tarifa_total"].ToString().Equals("") && markup != 0)
                {
                    tarifaTotalMarkup = Convert.ToDecimal(reader["S_merc_tarif_tarifa_total"]) + ((Convert.ToDecimal(reader["S_merc_tarif_tarifa_total"]) * markup) / 100);
                }
                else
                {
                    if (!reader["S_merc_tarif_tarifa_total"].ToString().Equals(""))
                    {
                        tarifaTotalMarkup = Convert.ToDecimal(reader["S_merc_tarif_tarifa_total"]);
                    }
                }


                if (Convert.ToInt32(reader["Moeda_id"]) != Convert.ToInt32(ddlCambioReport.SelectedValue) && !ddlCambioReport.SelectedValue.Equals("0"))
                {
                    cambio = utils.CalcularCambio(Convert.ToInt32(reader["Moeda_id"]), Convert.ToInt32(ddlCambioReport.SelectedValue));
                }


                if (idPeriodo.Equals(reader["S_merc_periodo_id"].ToString()) && nomeSupplier.Equals(reader["S_nome"].ToString()) && nomeCategoria.Equals(reader["Tarif_categoria_nome"].ToString()) && nomeTarifa.Equals(reader["S_mercado_tipo_tarifa_nome"].ToString()))
                {
                    if (Convert.ToInt32(reader["Moeda_id"]) == Convert.ToInt32(ddlCambioReport.SelectedValue) || Convert.ToInt32(ddlCambioReport.SelectedValue) == 0)
                    {
                        if (reader["Tipo_room_nome"].ToString().Equals("Single"))
                        {
                            if (reader["S_merc_tarif_tarifa_total"].ToString().Equals(""))
                            {
                                drw["SingleString"] = reader["S_mercado_tarifa_status_nome"];
                            }
                            else
                            {
                                drw["Single"] = arrendodar(tarifaTotalMarkup);
                            }
                        }
                        else if (reader["Tipo_room_nome"].ToString().Equals("Double"))
                        {
                            if (reader["S_merc_tarif_tarifa_total"].ToString().Equals(""))
                            {
                                drw["DoubleString"] = reader["S_mercado_tarifa_status_nome"];
                            }
                            else
                            {

                                if (ConfigurationManager.AppSettings["PuxaLogo"].Equals("DelBianco"))
                                {
                                    drw["Double"] = arrendodar(tarifaTotalMarkup);
                                }
                                else
                                {
                                    if (!reader["S_mercado_estacao_pacote"].ToString().Equals("") && !reader["S_merc_periodo_mandatorio"].ToString().Equals(""))
                                    {
                                        drw["Double"] = ((arrendodar(tarifaTotalMarkup) * Convert.ToInt32(reader["MinimoNoites_qtd"])) / 2);
                                    }
                                    else
                                    {
                                        drw["Double"] = arrendodar(tarifaTotalMarkup / 2);
                                    }
                                }

                            }
                        }
                        else if (reader["Tipo_room_nome"].ToString().Equals("Triple"))
                        {
                            if (reader["S_merc_tarif_tarifa_total"].ToString().Equals(""))
                            {
                                drw["TripleString"] = reader["S_mercado_tarifa_status_nome"];
                            }
                            else
                            {
                                if (ConfigurationManager.AppSettings["PuxaLogo"].Equals("DelBianco"))
                                {
                                    drw["Triple"] = arrendodar(tarifaTotalMarkup);
                                }
                                else
                                {
                                    if (!reader["S_mercado_estacao_pacote"].ToString().Equals("") && !reader["S_merc_periodo_mandatorio"].ToString().Equals(""))
                                    {
                                        drw["Triple"] = ((arrendodar(tarifaTotalMarkup) * Convert.ToInt32(reader["MinimoNoites_qtd"])) / 2);
                                    }
                                    else
                                    {
                                        drw["Triple"] = arrendodar(tarifaTotalMarkup / 2);
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (reader["S_merc_tarif_tarifa_total"].ToString().Equals(""))
                            {
                                drw["QuadrupleString"] = reader["S_mercado_tarifa_status_nome"];
                            }
                            else
                            {
                                if (ConfigurationManager.AppSettings["PuxaLogo"].Equals("DelBianco"))
                                {
                                    drw["Quadruple"] = arrendodar(tarifaTotalMarkup);
                                }
                                else
                                {
                                    if (!reader["S_mercado_estacao_pacote"].ToString().Equals("") && !reader["S_merc_periodo_mandatorio"].ToString().Equals(""))
                                    {
                                        drw["Quadruple"] = ((arrendodar(tarifaTotalMarkup) * Convert.ToInt32(reader["MinimoNoites_qtd"])) / 2);
                                    }
                                    else
                                    {
                                        drw["Quadruple"] = arrendodar(tarifaTotalMarkup / 2);
                                    }
                                }
                            }
                        }
                    }

                    else
                    {

                        string valor = reader["S_merc_tarif_tarifa_total"].ToString();

                        if (valor.Equals(""))
                        {
                            valor = "0";
                        }
                        else
                        {
                            valor = tarifaTotalMarkup.ToString();
                        }

                        decimal total = Convert.ToDecimal(valor) * cambio;

                        total = arrendodar(total);
                        string totalString = Convert.ToString(total.ToString("N2"));
                        if (valor.Equals("0"))
                        {
                            totalString = "";

                        }

                        if (reader["Tipo_room_nome"].ToString().Equals("Single"))
                        {
                            if (valor.Equals("0"))
                            {
                                drw["SingleString"] = reader["S_mercado_tarifa_status_nome"].ToString();
                            }
                            else
                            {
                                drw["Single"] = totalString;
                            }
                        }
                        else if (reader["Tipo_room_nome"].ToString().Equals("Double"))
                        {
                            if (valor.Equals("0"))
                            {
                                drw["DoubleString"] = reader["S_mercado_tarifa_status_nome"].ToString();
                            }
                            else
                            {

                                if (totalString.Equals(""))
                                {
                                    drw["Double"] = totalString;
                                }
                                else
                                {
                                    if (ConfigurationManager.AppSettings["PuxaLogo"].Equals("DelBianco"))
                                    {
                                        drw["Double"] = Convert.ToDecimal(totalString); // arrendodar(tarifaTotalMarkup);
                                    }
                                    else
                                    {
                                        if (!reader["S_mercado_estacao_pacote"].ToString().Equals("") && !reader["S_merc_periodo_mandatorio"].ToString().Equals(""))
                                        {
                                            drw["Double"] = ((Convert.ToDecimal(totalString) * Convert.ToInt32(reader["MinimoNoites_qtd"])) / 2);
                                        }
                                        else
                                        {
                                            drw["Double"] = Convert.ToDecimal(totalString) / 2;
                                        }
                                    }
                                }

                            }
                        }
                        else if (reader["Tipo_room_nome"].ToString().Equals("Triple"))
                        {
                            if (valor.Equals("0"))
                            {
                                drw["TripleString"] = reader["S_mercado_tarifa_status_nome"].ToString();
                            }
                            else
                            {
                                if (totalString.Equals(""))
                                {
                                    drw["Triple"] = totalString;
                                }
                                else
                                {
                                    if (ConfigurationManager.AppSettings["PuxaLogo"].Equals("DelBianco"))
                                    {
                                        drw["Triple"] = Convert.ToDecimal(totalString); // arrendodar(tarifaTotalMarkup);
                                    }
                                    else
                                    {
                                        if (!reader["S_mercado_estacao_pacote"].ToString().Equals("") && !reader["S_merc_periodo_mandatorio"].ToString().Equals(""))
                                        {
                                            drw["Triple"] = ((Convert.ToDecimal(totalString) * Convert.ToInt32(reader["MinimoNoites_qtd"])) / 2);
                                        }
                                        else
                                        {
                                            drw["Triple"] = Convert.ToDecimal(totalString) / 2;
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (valor.Equals("0"))
                            {
                                drw["QuadrupleString"] = reader["S_mercado_tarifa_status_nome"].ToString();
                            }
                            else
                            {
                                if (totalString.Equals(""))
                                {
                                    drw["Quadruple"] = totalString;
                                }
                                else
                                {
                                    if (ConfigurationManager.AppSettings["PuxaLogo"].Equals("DelBianco"))
                                    {
                                        drw["Quadruple"] = Convert.ToDecimal(totalString); // arrendodar(tarifaTotalMarkup);
                                    }
                                    else
                                    {
                                        if (!reader["S_mercado_estacao_pacote"].ToString().Equals("") && !reader["S_merc_periodo_mandatorio"].ToString().Equals(""))
                                        {
                                            drw["Quadruple"] = ((Convert.ToDecimal(totalString) * Convert.ToInt32(reader["MinimoNoites_qtd"])) / 2);
                                        }
                                        else
                                        {
                                            drw["Quadruple"] = Convert.ToDecimal(totalString) / 2;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {

                    if (!idPeriodo.Equals("") && !nomeSupplier.Equals("") && !nomeCategoria.Equals("") && !nomeTarifa.Equals(""))
                    {

                        string sql2;

                        sql2 = "select S_meal_nome, S_mercado_tarifa_status_nome, S_merc_meal_tarifa_total ";
                        sql2 = sql2 + "from S_Mercado_Meal mm ";
                        sql2 = sql2 + "INNER JOIN S_Meal m ON m.S_meal_id = mm.S_meal_id ";
                        sql2 = sql2 + "LEFT OUTER JOIN S_Mercado_Tarifa_Status mts ON mts.S_mercado_tarifa_status_id = mm.S_merc_tarif_status_id ";
                        sql2 = sql2 + "where mm.S_merc_periodo_id = " + idPeriodo;

                        string[] pars2 = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                        SqlConnection Con2 = new SqlConnection(pars2[1]);

                        Con2.Open();

                        SqlCommand cmd2 = new SqlCommand(sql2, Con2);
                        SqlDataReader reader2 = cmd2.ExecuteReader();


                        while (reader2.Read())
                        {

                            tarifaTotalMarkup2 = 0;
                            if (!reader2["S_merc_meal_tarifa_total"].ToString().Equals("") && markup != 0)
                            {
                                tarifaTotalMarkup2 = Convert.ToDecimal(reader2["S_merc_meal_tarifa_total"]) + ((Convert.ToDecimal(reader2["S_merc_meal_tarifa_total"]) * markup) / 100);
                            }
                            else
                            {
                                if (!reader2["S_merc_meal_tarifa_total"].ToString().Equals(""))
                                {
                                    tarifaTotalMarkup2 = Convert.ToDecimal(reader2["S_merc_meal_tarifa_total"]);
                                }
                            }

                            if (reader2["S_meal_nome"].ToString().Equals("Breakfast") || reader2["S_meal_nome"].ToString().Equals("Buffet breakfast"))
                            {
                                if (reader2["S_mercado_tarifa_status_nome"].ToString().Equals(""))
                                {
                                    drw["Breakfast"] = arrendodar(Convert.ToDecimal(tarifaTotalMarkup2 * cambio)).ToString("N2");
                                }
                                else
                                {
                                    drw["Breakfast"] = reader2["S_mercado_tarifa_status_nome"];
                                }
                            }
                            else if (reader2["S_meal_nome"].ToString().Equals("Half Board"))
                            {
                                if (reader2["S_mercado_tarifa_status_nome"].ToString().Equals(""))
                                {
                                    drw["Half Board"] = arrendodar(Convert.ToDecimal(tarifaTotalMarkup2 * cambio)).ToString("N2");
                                }
                                else
                                {
                                    drw["Half Board"] = reader2["S_mercado_tarifa_status_nome"];
                                }
                            }
                            else if (reader2["S_meal_nome"].ToString().Equals("Full Board"))
                            {
                                if (reader2["S_mercado_tarifa_status_nome"].ToString().Equals(""))
                                {
                                    drw["Full Board"] = arrendodar(Convert.ToDecimal(tarifaTotalMarkup2 * cambio)).ToString("N2");
                                }
                                else
                                {
                                    drw["Full Board"] = reader2["S_mercado_tarifa_status_nome"];
                                }
                            }
                        }

                        dt.Rows.Add(drw);

                        reader2.Close();
                        reader2.Dispose();
                        Con2.Close();
                    }


                    drw = dt.NewRow();

                    drw["S_nome"] = reader["S_nome"].ToString();
                    drw["Per_From"] = Convert.ToDateTime(reader["S_merc_periodo_from"]);

                    drw["dtFrom"] = string.Format(new System.Globalization.CultureInfo("en-GB"), "{0:MMM, dd yy}", reader["S_merc_periodo_from"]);
                    drw["dtTo"] = string.Format(new System.Globalization.CultureInfo("en-GB"), "{0:MMM, dd yy}", reader["S_merc_periodo_to"]);

                    if (!reader["S_mercado_estacao_pacote"].ToString().Equals("") && !reader["S_merc_periodo_mandatorio"].ToString().Equals(""))
                    {
                        drw["Classificacao"] = reader["S_mercado_estacao_nome"].ToString() + " " + reader["MinimoNoites_qtd"] + " Nights Mandatory";
                    }

                    drw["TipoTarifaNome"] = reader["S_mercado_tipo_tarifa_nome"].ToString();

                    if (!reader["S_merc_periodo_fdsTo"].ToString().Equals(""))
                    {
                        Utils ut = new Utils();

                        DayOfWeek fdsFrom = ut.ReturnDayPT(reader["S_merc_periodo_fdsFrom"].ToString());
                        DayOfWeek fdsTo = ut.ReturnDayPT(reader["S_merc_periodo_fdsTo"].ToString());

                        drw["CategoriaNome"] = reader["Tarif_categoria_nome"].ToString() + " - " + (fdsFrom).ToString().Substring(0, 3) + " / " + (fdsTo).ToString().Substring(0, 3);
                    }
                    else
                    {
                        drw["CategoriaNome"] = reader["Tarif_categoria_nome"].ToString();
                    }



                    drw["Cidade"] = reader["CID_nome"].ToString();


                    if (Convert.ToInt32(reader["Moeda_id"]) == Convert.ToInt32(ddlCambioReport.SelectedValue) || Convert.ToInt32(ddlCambioReport.SelectedValue) == 0)
                    {

                        if (reader["Tipo_room_nome"].ToString().Equals("Single"))
                        {
                            if (reader["S_merc_tarif_tarifa_total"].ToString().Equals(""))
                            {
                                drw["SingleString"] = reader["S_mercado_tarifa_status_nome"];
                            }
                            else
                            {
                                drw["Single"] = arrendodar(tarifaTotalMarkup);
                            }

                        }
                        else if (reader["Tipo_room_nome"].ToString().Equals("Double"))
                        {
                            if (reader["S_merc_tarif_tarifa_total"].ToString().Equals(""))
                            {
                                drw["DoubleString"] = reader["S_mercado_tarifa_status_nome"];
                            }
                            else
                            {
                                if (ConfigurationManager.AppSettings["PuxaLogo"].Equals("DelBianco"))
                                {
                                    drw["Double"] = arrendodar(tarifaTotalMarkup);
                                }
                                else
                                {
                                    if (!reader["S_mercado_estacao_pacote"].ToString().Equals("") && !reader["S_merc_periodo_mandatorio"].ToString().Equals(""))
                                    {
                                        drw["Double"] = ((arrendodar(tarifaTotalMarkup) * Convert.ToInt32(reader["MinimoNoites_qtd"])) / 2);
                                    }
                                    else
                                    {
                                        drw["Double"] = arrendodar(tarifaTotalMarkup / 2);
                                    }
                                }
                            }

                        }
                        else if (reader["Tipo_room_nome"].ToString().Equals("Triple"))
                        {
                            if (reader["S_merc_tarif_tarifa_total"].ToString().Equals(""))
                            {
                                drw["TripleString"] = reader["S_mercado_tarifa_status_nome"];
                            }
                            else
                            {
                                if (ConfigurationManager.AppSettings["PuxaLogo"].Equals("DelBianco"))
                                {
                                    drw["Triple"] = arrendodar(tarifaTotalMarkup);
                                }
                                else
                                {
                                    if (!reader["S_mercado_estacao_pacote"].ToString().Equals("") && !reader["S_merc_periodo_mandatorio"].ToString().Equals(""))
                                    {
                                        drw["Triple"] = ((arrendodar(tarifaTotalMarkup) * Convert.ToInt32(reader["MinimoNoites_qtd"])) / 2);
                                    }
                                    else
                                    {
                                        drw["Triple"] = arrendodar(tarifaTotalMarkup / 2);
                                    }
                                }
                            }

                        }
                        else
                        {
                            if (reader["S_merc_tarif_tarifa_total"].ToString().Equals(""))
                            {
                                drw["QuadrupleString"] = reader["S_mercado_tarifa_status_nome"];
                            }
                            else
                            {
                                if (ConfigurationManager.AppSettings["PuxaLogo"].Equals("DelBianco"))
                                {
                                    drw["Quadruple"] = arrendodar(tarifaTotalMarkup);
                                }
                                else
                                {
                                    if (!reader["S_mercado_estacao_pacote"].ToString().Equals("") && !reader["S_merc_periodo_mandatorio"].ToString().Equals(""))
                                    {
                                        drw["Quadruple"] = ((arrendodar(tarifaTotalMarkup) * Convert.ToInt32(reader["MinimoNoites_qtd"])) / 2);
                                    }
                                    else
                                    {
                                        drw["Quadruple"] = arrendodar(tarifaTotalMarkup / 2);
                                    }
                                }
                            }
                        }

                    }

                    else
                    {

                        string valor = reader["S_merc_tarif_tarifa_total"].ToString();

                        if (valor.Equals(""))
                        {
                            valor = "0";
                        }
                        else
                        {
                            valor = tarifaTotalMarkup.ToString();
                        }

                        decimal total = arrendodar(Convert.ToDecimal(valor) * cambio);
                        string totalString = Convert.ToString(total.ToString("N2"));

                        if (valor.Equals("0"))
                        {
                            totalString = "";
                        }

                        if (reader["Tipo_room_nome"].ToString().Equals("Single"))
                        {

                            if (reader["S_merc_tarif_tarifa_total"].ToString().Equals(""))
                            {
                                drw["SingleString"] = reader["S_mercado_tarifa_status_nome"];
                            }
                            else
                            {
                                drw["Single"] = total;
                            }
                        }
                        else if (reader["Tipo_room_nome"].ToString().Equals("Double"))
                        {

                            if (reader["S_merc_tarif_tarifa_total"].ToString().Equals(""))
                            {
                                drw["DoubleString"] = reader["S_mercado_tarifa_status_nome"];
                            }
                            else
                            {
                                if (ConfigurationManager.AppSettings["PuxaLogo"].Equals("DelBianco"))
                                {
                                    drw["Double"] = total; // arrendodar(tarifaTotalMarkup);
                                }
                                else
                                {
                                    if (!reader["S_mercado_estacao_pacote"].ToString().Equals("") && !reader["S_merc_periodo_mandatorio"].ToString().Equals(""))
                                    {
                                        drw["Double"] = ((total * Convert.ToInt32(reader["MinimoNoites_qtd"])) / 2);
                                    }
                                    else
                                    {
                                        drw["Double"] = total / 2;
                                    }
                                }
                            }

                        }
                        else if (reader["Tipo_room_nome"].ToString().Equals("Triple"))
                        {

                            if (reader["S_merc_tarif_tarifa_total"].ToString().Equals(""))
                            {
                                drw["TripleString"] = reader["S_mercado_tarifa_status_nome"];
                            }
                            else
                            {
                                if (ConfigurationManager.AppSettings["PuxaLogo"].Equals("DelBianco"))
                                {
                                    drw["Triple"] = total; // arrendodar(tarifaTotalMarkup);
                                }
                                else
                                {
                                    if (!reader["S_mercado_estacao_pacote"].ToString().Equals("") && !reader["S_merc_periodo_mandatorio"].ToString().Equals(""))
                                    {
                                        drw["Triple"] = ((total * Convert.ToInt32(reader["MinimoNoites_qtd"])) / 2);
                                    }
                                    else
                                    {
                                        drw["Triple"] = total / 2;
                                    }
                                }
                            }

                        }
                        else
                        {

                            if (reader["S_merc_tarif_tarifa_total"].ToString().Equals(""))
                            {
                                drw["QuadrupleString"] = reader["S_mercado_tarifa_status_nome"];
                            }
                            else
                            {
                                if (ConfigurationManager.AppSettings["PuxaLogo"].Equals("DelBianco"))
                                {
                                    drw["Quadruple"] = total; // arrendodar(tarifaTotalMarkup);
                                }
                                else
                                {
                                    if (!reader["S_mercado_estacao_pacote"].ToString().Equals("") && !reader["S_merc_periodo_mandatorio"].ToString().Equals(""))
                                    {
                                        drw["Quadruple"] = ((total * Convert.ToInt32(reader["MinimoNoites_qtd"])) / 2);
                                    }
                                    else
                                    {
                                        drw["Quadruple"] = total / 2;
                                    }
                                }
                            }

                        }


                    }



                    drw["TarifaStatus"] = reader["S_mercado_tarifa_status_nome"].ToString();
                    drw["Moeda"] = reader["Moeda_sigla"].ToString();

                    if (reader["S_merc_tarif_porApartamento"].ToString() != "")
                    {
                        drw["Por_Apt"] = "Por Apartamento";
                    }

                    if (reader["S_merc_tarif_porPessoa"].ToString() != "")
                    {
                        drw["Por_Pessoa"] = "Por Pessoa";
                    }

                    supplier = reader["S_nome"].ToString();

                    idPeriodo = reader["S_merc_periodo_id"].ToString();
                    nomeSupplier = reader["S_nome"].ToString();
                    nomeCategoria = reader["Tarif_categoria_nome"].ToString();
                    nomeTarifa = reader["S_mercado_tipo_tarifa_nome"].ToString();
                    //nomeMeal = reader["S_meal_nome"].ToString();                        

                }


            }

            if (retornou)
            {


                string sql3;

                sql3 = "select S_meal_nome, S_mercado_tarifa_status_nome, S_merc_meal_tarifa_total ";
                sql3 = sql3 + "from S_Mercado_Meal mm ";
                sql3 = sql3 + "INNER JOIN S_Meal m ON m.S_meal_id = mm.S_meal_id ";
                sql3 = sql3 + "LEFT OUTER JOIN S_Mercado_Tarifa_Status mts ON mts.S_mercado_tarifa_status_id = mm.S_merc_tarif_status_id ";
                sql3 = sql3 + "where mm.S_merc_periodo_id = " + idPeriodo;

                string[] pars3 = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con3 = new SqlConnection(pars3[1]);

                Con3.Open();

                SqlCommand cmd3 = new SqlCommand(sql3, Con3);
                SqlDataReader reader3 = cmd3.ExecuteReader();

                while (reader3.Read())
                {
                    tarifaTotalMarkup3 = 0;

                    if (!reader3["S_merc_meal_tarifa_total"].ToString().Equals("") && markup != 0)
                    {
                        tarifaTotalMarkup3 = Convert.ToDecimal(reader3["S_merc_meal_tarifa_total"]) + ((Convert.ToDecimal(reader3["S_merc_meal_tarifa_total"]) * markup) / 100);
                    }
                    else
                    {
                        if (!reader3["S_merc_meal_tarifa_total"].ToString().Equals(""))
                        {
                            tarifaTotalMarkup3 = Convert.ToDecimal(reader3["S_merc_meal_tarifa_total"]);
                        }

                    }


                    if (reader3["S_meal_nome"].ToString().Equals("Breakfast") || reader3["S_meal_nome"].ToString().Equals("Buffet breakfast"))
                    {
                        if (reader3["S_mercado_tarifa_status_nome"].ToString().Equals(""))
                        {
                            drw["Breakfast"] = arrendodar(tarifaTotalMarkup3 * cambio);
                        }
                        else
                        {
                            drw["Breakfast"] = reader3["S_mercado_tarifa_status_nome"];
                        }
                    }
                    else if (reader3["S_meal_nome"].ToString().Equals("Half Board"))
                    {
                        if (reader3["S_mercado_tarifa_status_nome"].ToString().Equals(""))
                        {
                            drw["Half Board"] = arrendodar(tarifaTotalMarkup3 * cambio);
                        }
                        else
                        {
                            drw["Half Board"] = reader3["S_mercado_tarifa_status_nome"];
                        }
                    }
                    else if (reader3["S_meal_nome"].ToString().Equals("Full Board"))
                    {
                        if (reader3["S_mercado_tarifa_status_nome"].ToString().Equals(""))
                        {
                            drw["Full Board"] = arrendodar(tarifaTotalMarkup3 * cambio);
                        }
                        else
                        {
                            drw["Full Board"] = reader3["S_mercado_tarifa_status_nome"];
                        }
                    }


                }

                reader3.Close();
                reader3.Dispose();
                Con3.Close();

            }

            dt.Rows.Add(drw);
            int numero = dt.Rows.Count;

            MoedaDAL moedaDAL = new MoedaDAL();
            Moeda moeda = new Moeda();
            string sigla;

            if (Convert.ToInt32(ddlCambioReport.SelectedValue) == 0)
            {
                sigla = "$";
            }
            else
            {
                sigla = moedaDAL.ObterPorId(Convert.ToInt32(ddlCambioReport.SelectedValue)).Moeda_sigla;
            }




            if (ConfigurationManager.AppSettings["PuxaLogo"].Equals("DelBianco"))
            {
                RptSupplierTarifas_DelBianco rpt = new RptSupplierTarifas_DelBianco();

                CrystalDecisions.CrystalReports.Engine.TextObject ObjLastUpd = rpt.ReportDefinition.Sections[1].ReportObjects["txtDataLastUpd"] as TextObject;

                ObjLastUpd.Text = string.Format(new System.Globalization.CultureInfo("en-GB"), "{0:MMM, dd yyyy}", DateTime.Now);


                int valor33 = dt.Rows.Count;

                rpt.SetDataSource(dt);

                switch (ddlFormatoReport.SelectedValue)
                {
                    case "1":
                        rpt.ExportToHttpResponse(
                            ExportFormatType.PortableDocFormat,
                            Response, true, "Tarifas Supplier");
                        break;

                    case "2":
                        rpt.ExportToHttpResponse(
                            ExportFormatType.WordForWindows,
                            Response, true, "Tarifas Supplier");
                        break;

                    case "3":
                        rpt.ExportToHttpResponse(
                            ExportFormatType.Excel,
                            Response, true, "Tarifas Supplier");
                        break;
                }

            }
            else
            {
                RptSupplierTarifas rpt = new RptSupplierTarifas();

                CrystalDecisions.CrystalReports.Engine.TextObject ObjNomeEmpresa = rpt.ReportDefinition.Sections[1].ReportObjects["txtNomeEmpresa"] as TextObject;
                CrystalDecisions.CrystalReports.Engine.TextObject ObjEnderecoEmpresa = rpt.ReportDefinition.Sections[1].ReportObjects["txtEnderecoEmpresa"] as TextObject;
                CrystalDecisions.CrystalReports.Engine.TextObject ObjContatoEmpresa = rpt.ReportDefinition.Sections[1].ReportObjects["txtContato"] as TextObject;
                CrystalDecisions.CrystalReports.Engine.TextObject ObjMoeda = rpt.ReportDefinition.Sections[1].ReportObjects["txtMoeda"] as TextObject;
                ObjNomeEmpresa.Text = NomeEmpresa;
                ObjEnderecoEmpresa.Text = EnderecoEmpresa;
                ObjContatoEmpresa.Text = ContatoEmpresa;
                ObjMoeda.Text = sigla;

                int valor33 = dt.Rows.Count;

                rpt.SetDataSource(dt);

                switch (ddlFormatoReport.SelectedValue)
                {
                    case "1":
                        rpt.ExportToHttpResponse(
                            ExportFormatType.PortableDocFormat,
                            Response, true, "Tarifas Supplier");
                        break;

                    case "2":
                        rpt.ExportToHttpResponse(
                            ExportFormatType.WordForWindows,
                            Response, true, "Tarifas Supplier");
                        break;

                    case "3":
                        rpt.ExportToHttpResponse(
                            ExportFormatType.Excel,
                            Response, true, "Tarifas Supplier");
                        break;
                }
            }

            reader.Close();
            reader.Dispose();
            Con.Close();

        }

        protected Decimal arrendodar(Decimal valor)
        {
            decimal valorArr = 0;
            try
            {
                string[] pars = Convert.ToDecimal(valor).ToString().Split(',');
                double valorArredondado = 0;
                ArredondaDAL arrd = new ArredondaDAL();
                if (pars.Count() > 1)
                {
                    Arredonda arr;

                    if (pars[1].Length == 1)
                    {
                        string val = pars[1] + 0;
                        arr = arrd.ObterArr(Convert.ToInt32(val.Substring(0, 2)));
                    }
                    else
                    {
                        arr = arrd.ObterArr(Convert.ToInt32(pars[1].Substring(0, 2)));
                    }

                    if (arr.Arredonda_recebe < 1)
                    {
                        valorArr = Convert.ToDecimal(pars[0]) + Convert.ToDecimal(arr.Arredonda_recebe);
                        valorArredondado = Convert.ToDouble(valorArr);
                    }
                    else
                    {
                        valorArr = Convert.ToDecimal(pars[0]) + Convert.ToDecimal(arr.Arredonda_recebe);
                        valorArredondado = Convert.ToDouble(valorArr);
                    }
                }

                return valorArr;

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }

            return valorArr;
        }

        #endregion

        #region Amenities

        protected void PopulaDataListAmenitites()
        {
            try
            {
                if (txtCodigo.Text.Equals(string.Empty))
                    return;

                var lstGroups = new GroupAmenitiesDAL().ListarTodos();

                for (int iGroup = 0; iGroup < lstGroups.Count; iGroup++)
                {
                    var lstAmenities = new AmenitiesDAL().ListarPorGrupo(lstGroups[iGroup].S_GroupAmenities_ID);
                    DataTable dt = new DataTable();
                    dt.Columns.Add("Nome");
                    dt.Columns.Add("imagem");

                    for (int iAmenity = 0; iAmenity < lstAmenities.Count; iAmenity++)
                        dt.Rows.Add(lstAmenities[iAmenity].S_Amenities_nome.Trim(), "~/iconsAmenities/" + lstAmenities[iAmenity].S_Amenities_imgNome);

                    switch (lstGroups[iGroup].S_GroupAmenities_ID)
                    {
                        case 1: // General Information
                            rptGeneralInformation.DataSource = dt;
                            rptGeneralInformation.DataBind();
                            break;
                        case 2: // Activities
                            rptActivities.DataSource = dt;
                            rptActivities.DataBind();
                            break;
                        case 3: // General
                            rptGeneral.DataSource = dt;
                            rptGeneral.DataBind();
                            break;
                        case 4: // Internet
                            rptInternet.DataSource = dt;
                            rptInternet.DataBind();
                            break;
                        case 5: // Services
                            rptServices.DataSource = dt;
                            rptServices.DataBind();
                            break;
                        case 6: // Children Facilities
                            rptChildrenFacilities.DataSource = dt;
                            rptChildrenFacilities.DataBind();
                            break;
                        case 7: // Suite
                            rptSuite.DataSource = dt;
                            rptSuite.DataBind();
                            break;
                        default:
                            break;
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }

        public void SetEnabledChecked(string _checkboxID, RepeaterItemEventArgs e)
        {
            var Supplier = new SupplierDAL().ObterPorId(Convert.ToInt32(txtCodigo.Text));
            var AmenitiesSupplier = new AmenitiesDAL().ListarPorSupplier(Supplier.S_id);

            DataRowView drv = e.Item.DataItem as DataRowView;

            if (drv == null)
                return;

            CheckBox chk = e.Item.FindControl(_checkboxID) as CheckBox;

            if (chk == null)
                return;

            foreach (var amenity in AmenitiesSupplier)
                if (amenity.S_Amenities_nome == chk.ToolTip)
                    chk.Checked = true;
        }

        protected void rptActivities_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            SetEnabledChecked("chkActivities", e);
        }

        protected void rptChildrenFacilities_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            SetEnabledChecked("chkChildrenFacilities", e);
        }

        protected void rptGeneral_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            SetEnabledChecked("chkGeneral", e);
        }

        protected void rptGeneralInformation_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            SetEnabledChecked("chkGeneralInformation", e);
        }

        protected void rptInternet_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            SetEnabledChecked("chkInternet", e);
        }

        protected void rptServices_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            SetEnabledChecked("chkServices", e);
        }

        protected void rptSuite_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            SetEnabledChecked("chkSuite", e);
        }

        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            try
            {
                var AmenitiesSupplier = new SupplierAmenityDAL().ListarPorSupplier(Convert.ToInt32(txtCodigo.Text));

                List<Repeater> lstRepeaters = new List<Repeater>();
                lstRepeaters.Add(rptActivities);
                lstRepeaters.Add(rptChildrenFacilities);
                lstRepeaters.Add(rptGeneral);
                lstRepeaters.Add(rptGeneralInformation);
                lstRepeaters.Add(rptInternet);
                lstRepeaters.Add(rptServices);
                lstRepeaters.Add(rptSuite);


                foreach (Repeater rpt in lstRepeaters)
                {
                    foreach (RepeaterItem RpItem in rpt.Items)
                    {
                        CheckBox chk = (CheckBox)RpItem.Controls[1];

                        S_Amenities amenity = new AmenitiesDAL().ObterPorNome(chk.ToolTip);

                        if (amenity == null)
                            throw new ApplicationException("Amenity não encontrada! Tente novamente!");

                        bool wasChecked = false;

                        foreach (S_SupplierAmenities amenitySupplier in AmenitiesSupplier)
                            if (amenity.S_Amenities_id == amenitySupplier.S_SupplierAmenities_Amenities_ID)
                                wasChecked = true;

                        if ((wasChecked && chk.Checked) || (!wasChecked && !chk.Checked))
                            continue;

                        if (chk.Checked)
                        {
                            S_SupplierAmenities supAm = new S_SupplierAmenities();
                            supAm.S_SupplierAmenities_Amenities_ID = amenity.S_Amenities_id;
                            supAm.S_SupplierAmenities_Supplier_ID = Convert.ToInt32(txtCodigo.Text);

                            new SupplierAmenityDAL().Inserir(supAm);
                        }
                        else
                        {
                            SupplierAmenityDAL SupAmDAL = new SupplierAmenityDAL();
                            SupAmDAL.Excluir(SupAmDAL.ObterID(Convert.ToInt32(txtCodigo.Text), amenity.S_Amenities_id));
                        }
                    }
                }

                MostrarMsg("Os dados foram atualizados com sucesso!");

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        #endregion

        #region Descrições

        protected void Buscadescricao()
        {
            SupplierDAL sd = new SupplierDAL();
            NewTierraEntities con = new NewTierraEntities();

            try
            {
                Supplier s = sd.ObterPorId(Convert.ToInt32(Session["Sid"]));

                lblMsgCadDescricao.Text = "";


                if (con.S_Descricao.Any(o => o.S_id == s.S_id))
                {
                    var desc = con.S_Descricao.Where(ds => ds.S_id.Equals(s.S_id)).Single();

                    Session["DescricaoID"] = desc.Desc_id;
                    EditorInfoShort.Content = desc.Desc_short;
                    EditorInfoLong.Content = desc.Desc_long;
                    txtremarks.Text = desc.Desc_remarks;
                    txtInfoCliente.Text = desc.Desc_cliente;
                    txtInfoVoucher.Text = desc.Desc_voucher;
                    txtNumRoomsSupplier.Text = desc.Desc_nRooms.ToString();
                    txtCheckinSupplier.Text = desc.Desc_HoraCheckIn;
                    txtCheckoutSupplier.Text = desc.Desc_HoraCheckOut;
                    txtLinkAdvisorSupplier.Text = desc.Desc_LnkAdvisor;


                    if (!Session["DescricaoID"].Equals(""))
                    {
                        btnCadastrarDescricao.Visible = false;
                        btnAtualizarDescricao.Visible = true;
                    }
                }
                else
                {
                    EditorInfoLong.Content = "";
                    EditorInfoShort.Content = "";
                    txtremarks.Text = "";
                    txtInfoVoucher.Text = "";
                    txtInfoCliente.Text = "";
                    btnCadastrarDescricao.Visible = true;
                    btnAtualizarDescricao.Visible = false;
                    Session.Remove("DescricaoID");
                }

            }
            catch (Exception ex)
            {
                lblMsgCadDescricao.Text = "Erro: " + ex.Message;
            }
        }

        protected void CadastrarDescricao(object sender, EventArgs e)
        {
            try
            {

                Utils util = new Utils();
                S_Descricao d = new S_Descricao();

                if (!txtNumRoomsSupplier.Text.Equals(""))
                {
                    if (!util.ValidaNumerosInteiros(txtNumRoomsSupplier.Text))
                    {
                        MostrarMsg("Número de rooms digitar somente valor inteiro.");
                        return;
                    }
                    else
                    {
                        d.Desc_nRooms = Convert.ToInt32(txtNumRoomsSupplier.Text);
                    }
                }
                else
                {
                    d.Desc_nRooms = null;
                }

                d.Desc_short = EditorInfoShort.Content;
                d.Desc_long = EditorInfoLong.Content;
                d.Desc_remarks = txtremarks.Text;
                d.Desc_cliente = txtInfoCliente.Text;
                d.Desc_voucher = txtInfoVoucher.Text;
                d.Desc_HoraCheckIn = txtCheckinSupplier.Text;
                d.Desc_HoraCheckOut = txtCheckoutSupplier.Text;
                d.Desc_LnkAdvisor = txtLinkAdvisorSupplier.Text;
                d.S_id = Convert.ToInt32(Session["Sid"]);

                DescricaoDAL s = new DescricaoDAL();

                s.Salvar(d);
                MostrarMsg("Descrição cadastrada com sucesso.");
                btnCadastrarDescricao.Visible = false;
                btnAtualizarDescricao.Visible = true;

                Session["DescricaoID"] = d.Desc_id;

            }
            catch (Exception ex)
            {
                System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
                Log.Save((trace.GetFrame(0).GetMethod().ReflectedType.FullName), ("Linha: " + trace.GetFrame(0).GetFileLineNumber()), ("Column: " + trace.GetFrame(0).GetFileColumnNumber()), ex.Message);

                lblMsgCadDescricao.Text = ex.Message;
            }
        }

        protected void AtualizarDescricao(object sender, EventArgs e)
        {
            try
            {
                Utils util = new Utils();
                S_Descricao d = new S_Descricao();

                if (!txtNumRoomsSupplier.Text.Equals(""))
                {
                    if (!util.ValidaNumerosInteiros(txtNumRoomsSupplier.Text))
                    {
                        MostrarMsg("Número de rooms digitar somente valor inteiro.");
                        return;
                    }
                    else
                    {
                        d.Desc_nRooms = Convert.ToInt32(txtNumRoomsSupplier.Text);
                    }
                }
                else
                {
                    d.Desc_nRooms = null;
                }

                d.Desc_id = Convert.ToInt32(Session["DescricaoID"]);
                d.Desc_short = EditorInfoShort.Content;
                d.Desc_long = EditorInfoLong.Content;
                d.Desc_remarks = txtremarks.Text;
                d.Desc_cliente = txtInfoCliente.Text;
                d.Desc_voucher = txtInfoVoucher.Text;
                d.Desc_HoraCheckIn = txtCheckinSupplier.Text;
                d.Desc_HoraCheckOut = txtCheckoutSupplier.Text;
                d.Desc_LnkAdvisor = txtLinkAdvisorSupplier.Text;
                d.S_id = Convert.ToInt32(Session["Sid"]);

                DescricaoDAL s = new DescricaoDAL();

                s.Atualizar(d);
                MostrarMsg("Descrição atualizada com sucesso.");
            }
            catch (Exception ex)
            {
                System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
                Log.Save((trace.GetFrame(0).GetMethod().ReflectedType.FullName), ("Linha: " + trace.GetFrame(0).GetFileLineNumber()), ("Column: " + trace.GetFrame(0).GetFileColumnNumber()), ex.Message);

                lblMsgCadDescricao.Text = ex.Message;
            }
        }

        protected void ExcluirDescricao(object sender, EventArgs e)
        {
            try
            {
                DescricaoDAL s = new DescricaoDAL();

                S_Descricao d = s.ObterPorId(Convert.ToInt32(Session["DescricaoID"]));

                s.Excluir(d);
                MostrarMsg("Descrição excluída com sucesso.");
                LimpaCampos(this.Controls);
            }
            catch (Exception ex)
            {
                lblMsgCadDescricao.Text = "Erro :" + ex.Message;
            }
        }

        protected void LimparDescricao(object sender, EventArgs e)
        {
            LimpaCampos(this.Controls);
        }

        #endregion

        #region CRUD Bases

        protected void SalvarBases(object sender, EventArgs e)
        {
            try
            {
                S_Bases b = new S_Bases();
                SBasesDAL d = new SBasesDAL();

                int index = 0;

                if (rdoBaseOrdem1.Checked) { index = 1; }
                else if (rdoBaseOrdem2.Checked) { index = 2; }
                else if (rdoBaseOrdem3.Checked) { index = 3; }

                b.Base_index = index;
                b.Base_de = Convert.ToInt32(txtDe.Text);
                b.Base_ate = Convert.ToInt32(txtAte.Text);
                b.S_id = Convert.ToInt32(Session["Sid"]);
                b.Mercado_id = Convert.ToInt32(ddlMercadoFiltro_Base.SelectedValue);
                b.BaseTarifaria_id = Convert.ToInt32(ddlBaseTarifariaFiltro_Base.SelectedValue);
                b.Moeda_id = Convert.ToInt32(ddlMoedaFiltro_Base.SelectedValue);
                b.IdTipoTrans = Convert.ToInt32(ddlTipoTransporte.SelectedValue);
                b.TipoBase_id = Convert.ToInt32(ddlTipoBase_Base.SelectedValue);


                d.Salvar(b);
                MostrarMsg("Registro cadastrado com sucesso.");
                txtDe.Text = "";
                txtAte.Text = "";
                PopulaGridBases(index);
                PopulaGridResumoBases(Convert.ToInt32(Session["Sid"]));
            }
            catch (Exception ex)
            {
                lblMsgCadBases.Text = ex.Message;
            }

        }

        protected void ExcluirBases(object sender, EventArgs e)
        {
            try
            {
                SBasesDAL b = new SBasesDAL();

                foreach (S_Bases sb in b.ListarTodosPorSupplier(Convert.ToInt32(Session["Sid"]), 1, Convert.ToInt32(ddlMercadoFiltro_Base.SelectedValue), Convert.ToInt32(ddlBaseTarifariaFiltro_Base.SelectedValue), Convert.ToInt32(ddlMoedaFiltro_Base.SelectedValue), Convert.ToInt32(ddlTipoTransporte.SelectedValue), Convert.ToInt32(ddlTipoBase_Base.SelectedValue)))
                {
                    b.Excluir(sb);
                }

                PopulaGridBases(1);
                MostrarMsg("Registro excluído com sucesso.");
                PopulaGridResumoBases(Convert.ToInt32(Session["Sid"]));
            }
            catch (Exception ex)
            {
                lblMsgCadBases.Text = ex.Message;
            }
        }

        protected void ExcluirBases2(object sender, EventArgs e)
        {
            try
            {
                SBasesDAL b = new SBasesDAL();

                foreach (S_Bases sb in b.ListarTodosPorSupplier(Convert.ToInt32(Session["Sid"]), 2, Convert.ToInt32(ddlMercadoFiltro_Base.SelectedValue), Convert.ToInt32(ddlBaseTarifariaFiltro_Base.SelectedValue), Convert.ToInt32(ddlMoedaFiltro_Base.SelectedValue), Convert.ToInt32(ddlTipoTransporte.SelectedValue), Convert.ToInt32(ddlTipoBase_Base.SelectedValue)))
                {
                    b.Excluir(sb);
                }

                PopulaGridBases(2);
                MostrarMsg("Registro excluído com sucesso.");
                PopulaGridResumoBases(Convert.ToInt32(Session["Sid"]));
            }
            catch (Exception ex)
            {
                lblMsgCadBases.Text = ex.Message;
            }
        }

        protected void ExcluirBases3(object sender, EventArgs e)
        {
            try
            {
                SBasesDAL b = new SBasesDAL();

                foreach (S_Bases sb in b.ListarTodosPorSupplier(Convert.ToInt32(Session["Sid"]), 3, Convert.ToInt32(ddlMercadoFiltro_Base.SelectedValue), Convert.ToInt32(ddlBaseTarifariaFiltro_Base.SelectedValue), Convert.ToInt32(ddlMoedaFiltro_Base.SelectedValue), Convert.ToInt32(ddlTipoTransporte.SelectedValue), Convert.ToInt32(ddlTipoBase_Base.SelectedValue)))
                {
                    b.Excluir(sb);
                }

                PopulaGridBases(3);
                MostrarMsg("Registro excluído com sucesso.");
                PopulaGridResumoBases(Convert.ToInt32(Session["Sid"]));
            }
            catch (Exception ex)
            {
                lblMsgCadBases.Text = ex.Message;
            }
        }

        protected void SalvarBasesAuto(object sender, EventArgs e)
        {
            try
            {


                SBasesDAL d = new SBasesDAL();

                int index = 0;

                for (int i = Convert.ToInt32(txtDeAuto.Text); i < Convert.ToInt32(txtAteAuto.Text) + 1; i++)
                {
                    S_Bases b = new S_Bases();

                    if (rdoBaseOrdem1.Checked) { index = 1; }
                    else if (rdoBaseOrdem2.Checked) { index = 2; }
                    else if (rdoBaseOrdem3.Checked) { index = 3; }

                    b.Base_de = Convert.ToInt32(i);
                    b.Base_ate = Convert.ToInt32(i);

                    b.Base_index = index;
                    b.S_id = Convert.ToInt32(Session["Sid"]);
                    b.Mercado_id = Convert.ToInt32(ddlMercadoFiltro_Base.SelectedValue);
                    b.BaseTarifaria_id = Convert.ToInt32(ddlBaseTarifariaFiltro_Base.SelectedValue);
                    b.Moeda_id = Convert.ToInt32(ddlMoedaFiltro_Base.SelectedValue);
                    b.IdTipoTrans = Convert.ToInt32(ddlTipoTransporte.SelectedValue);
                    b.TipoBase_id = Convert.ToInt32(ddlTipoBase_Base.SelectedValue);

                    d.Salvar(b);
                }

                txtDeAuto.Text = "";
                txtAteAuto.Text = "";

                MostrarMsg("Registro cadastrado com sucesso.");
                PopulaGridBases(index);
                PopulaGridResumoBases(Convert.ToInt32(Session["Sid"]));

            }
            catch (Exception ex)
            {
                lblMsgCadBases.Text = ex.Message;
            }

        }

        protected void PopulaGridResumoBases(int IdSupplier)
        {
            try
            {

                SBasesDAL sbd = new SBasesDAL();

                GridResumoBases.DataSource = sbd.ObterPorIdSupplier(IdSupplier);
                GridResumoBases.DataBind();

                MergeCells();
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        private void MergeCells()
        {
            int i = GridResumoBases.Rows.Count - 2;
            while (i >= 0)
            {
                GridViewRow curRow = GridResumoBases.Rows[i];
                GridViewRow preRow = GridResumoBases.Rows[i + 1];

                int j = 0;
                while (j < curRow.Cells.Count)
                {
                    if (curRow.Cells[j].Text == preRow.Cells[j].Text)
                    {
                        if (preRow.Cells[j].RowSpan < 2)
                        {
                            curRow.Cells[j].RowSpan = 2;
                            preRow.Cells[j].Visible = false;
                        }
                        else
                        {
                            curRow.Cells[j].RowSpan = preRow.Cells[j].RowSpan + 1;
                            preRow.Cells[j].Visible = false;
                        }
                    }
                    j++;
                }
                i--;
            }
        }

        #endregion

        protected void MostrarMsg(string Msg)
        {
            ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "call me", "showAutoCloseMessage('" + Msg + "')", true);
        }

    }
}